不在UI线程中触发PropertyChanged的副作用是什么



如果实现INotifyPropertyChanged,您可以在非UI线程中引发事件-我应该避免这种情况吗?为什么?

更新:这是关于wpf应用程序中的绑定。

不,您不应该避免这种情况。WPF代表您将PropertyChanged事件封送至UI线程,但即使没有,组件也可能没有责任这样做

更新:我有点误解了你的问题。出于某种原因,我认为您是在专门询问与UI没有直接关系的后台组件。

如果您的组件打算由UI直接使用,那么将更改封送到UI线程可能是有意义的,例如使用Windows窗体。但是,如果组件是UI不可知的,那么它通常没有意义,尽管在必要时可以使用当前的SynchronizationContext以不可知的方式切换到UI线程。

我使用WPF在需要时进行编组,因为正如我通常所说,您不需要这样做,因为WPF是为您做的。但是,如果您也在更改集合,那么您将需要这样做,因为这样的更改不会自动整理。

如果使用数据绑定,这可能会导致绑定框架遇到异常。例如,winforms绑定是而不是预期的,并且通常会遇到麻烦。

不过,这取决于框架;例如,也许(我不知道)WPF支持这一点。

最新更新