首先,我知道有许多问题和解决方案可以从非后台线程中正确地调用线程处理。我发现的所有问题和解决方案都专注于在列表或业务对象本身引发事件的情况下,Windows表单可以订阅并正确地将更新调度到主UI线程。
在我的情况下,业务对象列表由独立层中的后台线程更新。我希望将此列表绑定到主线程上的控件。我真的需要从业务对象列表向UI公开事件,以便可以正确地调度更新吗?我不能安静地更新业务对象列表并将这些更新传播到UI,而不必以某种方式向UI公开列表更改事件吗?
编辑:
我的问题本质上是这样的:在属性更改后触发INotifyPropertyChanged。绑定到实现此接口的对象的控件将尝试进行更新,如果导致事件触发的线程不是UI线程,则会出现问题。因此,我们需要通知UI线程,以便可以以线程安全的方式进行更新,这意味着更新对象的后台线程不能简单地进行操作,它必须请求权限来更新对象或要求UI代表其对对象进行更改。这就是我所说的UI被拉入处理对象更新的方式。
在我的情况下,业务对象列表由独立层中的后台线程更新。我希望将此列表绑定到主线程上的控件。我真的需要从业务对象列表向UI公开事件,以便可以正确地调度更新吗?我不能安静地更新业务对象列表并将这些更新传播到UI,而不必以某种方式向UI公开列表更改事件吗?
编辑:
我的问题本质上是这样的:在属性更改后触发INotifyPropertyChanged。绑定到实现此接口的对象的控件将尝试进行更新,如果导致事件触发的线程不是UI线程,则会出现问题。因此,我们需要通知UI线程,以便可以以线程安全的方式进行更新,这意味着更新对象的后台线程不能简单地进行操作,它必须请求权限来更新对象或要求UI代表其对对象进行更改。这就是我所说的UI被拉入处理对象更新的方式。