在UI线程中触发PropertyChanged有什么副作用?

时间:2012-01-08 12:23:17

标签: .net wpf

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

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

2 个答案:

答案 0 :(得分:4)

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

更新:我稍微误解了你的问题。出于某种原因,我认为你是专门询问与UI没有直接关系的背景组件。

如果您的组件是供UI直接使用的,那么编组UI线程的更改可能是有意义的,例如使用Windows窗体。但是,如果组件与UI无关,则通常没有意义,尽管如有必要,您可以使用当前SynchronizationContext以不可知的方式切换到UI线程。

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

答案 1 :(得分:0)

如果使用数据绑定,这可能会导致绑定框架遇到异常。例如,winforms绑定期待这一点,并且通常会遇到麻烦。

这取决于框架;也许(我通常不知道)例如,WPF支持这个。