【发布时间】:2009-07-08 11:55:50
【问题描述】:
首先,我知道有很多问题和解决方案可以纠正来自后台线程以外的线程的线程编组。我发现的所有问题和解决方案都集中在列表或业务对象本身引发事件的场景, Windows 窗体可以订阅并正确地将更新编组到主 UI 线程。
在我的例子中,业务对象列表正在由单独层中的后台线程更新。我希望这个列表绑定到主线程上的控件。我真的需要从业务对象列表中向 UI 公开事件,以便可以正确编组更新吗?我可以不悄悄地更新业务对象列表并将这些更新传播到 UI,而不必以某种方式向 UI 公开列表更改事件吗?
编辑:
我的问题本质上是这样的:更改的 INotifyProperty 在属性更改后被触发。绑定到实现此接口的对象的控件将尝试更新,如果导致事件触发的线程不是 UI 线程,我们就有问题了。所以我们需要通知 UI 线程我们要更新,以便更新可以以线程安全的方式处理,这意味着后台线程更新对象不能简单地进行它的业务,它必须请求权限才能更新对象或要求 UI 代表其对对象进行更改。这就是我所说的 UI 被拉入句柄对象更新的意思。
【问题讨论】: