c# – NotifyPropertyChanged线程安全吗?

我正在从INotifyPropertyChanged查看NotifyPropertyChanged()并注意到在Microsoft的示例中,例如:

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

首先没有捕获委托引用(正如它在此处所说的那样:Use of null check in event handler)

我查看了自动生成的Reference.cs以获取我的ServiceReferences,并完成了此检查.

所以我的问题是我应该这样做(以任何形式,如扩展方法等)?如果不这样做,是否有任何可能的问题?

解决方法:

你是对的,检查应该完成,他们的例子是错误的.

以下是标准代码.

private void NotifyPropertyChanged(String propertyName)
{
    var handler = PropertyChanged;
    if (handler != null)
    {
        handler (this, new PropertyChangedEventArgs(propertyName));
    }
}

编辑:进一步解释为什么需要这个(以及它为什么工作)

在MS示例中,他们直接在PropertyChanged上执行空检查,然后调用它.因此,PropertyChanged可能在null检查和调用之间变为null.通过将委托分配给局部变量,我们可以确保保留对委托的引用,并且它不能在空检查和调用之间进行更改.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...