不在 UI 线程中触发 PropertyChanged 会产生哪些副作用?

Nik*_*nov 5 .net wpf

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

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

Ken*_*art 4

不,你不应该避免这个。WPF 元帅PropertyChanged代表您将事件编组到 UI 线程,但即使没有这样做,组件也可能没有责任这样做。

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

如果您的组件旨在由 UI 直接使用,那么将更改封送到 UI 线程可能是有意义的,例如使用 Windows 窗体。但是,如果组件与 UI 无关,则通常没有意义,尽管如有必要,您可以使用当前的SynchronizationContext.

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