gpt4 book ai didi

c# - NotifyPropertyChanged 线程安全吗?

转载 作者:太空狗 更新时间:2023-10-30 00:44:26 26 4
gpt4 key购买 nike

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

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

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

我查看了为我的 ServiceReferences 自动生成的 Reference.cs,此检查已完成。

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

最佳答案

你是对的,应该做检查,他们的例子是错误的。

下面是标准代码。

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

编辑:关于为什么需要这样做(以及它为什么有效)的进一步解释

在 MS 示例中,他们直接对 PropertyChanged 进行空检查,然后调用它。因此,PropertyChanged 有可能在 null 检查和调用之间变为 null。通过将委托(delegate)分配给局部变量,我们可以确保保留对委托(delegate)的引用,并且它不会在 null 检查和调用之间发生变化。

关于c# - NotifyPropertyChanged 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7913663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com