【发布时间】:2009-08-18 08:21:02
【问题描述】:
我需要建议和澄清。我目前正在开发一个需要在数据网格中显示数据库内容的监视器应用程序(我正在使用WPFToolkit 网格顺便说一句)。网格绑定到我的 ADO.NET 数据集中的一个表,它工作正常。如果我通过 UI 中的按钮修改 DataSet,网格会更新并且每个人都很高兴(this blog 中很好地描述了绑定和 ADO.NET)。但是,数据库将被其他应用程序更新,并且监控应用程序需要自动显示这些更改。 DataSet 是通过轮询数据库来更新的(由于各种原因,从 DB 中监听 post_events 不适用),但更改不会显示在网格中。
据我了解,这是 WPF 数据绑定的一个特性。您不能从 UI 之外的其他线程更新源。在我看来,这太疯狂了。必须有成千上万的应用程序从其他用户或应用程序输入数据。我尝试使用 Dispatcher 将源的实际更新移动到 UI 线程,但我仍然得到同样的错误。
那么现在我的问题是:我的分析是否正确,如果正确,您能否就如何解决问题提供任何建议?另外,如果我的分析是正确的,有人可以尝试解释为什么 WPF 会这样工作吗?
感谢您的宝贵时间
【问题讨论】:
标签: c# wpf multithreading data-binding ado.net