stu*_*ree 6 c# propertychanged
文章http://msdn.microsoft.com/en-us/magazine/dd419663.aspx具有以下代码示例:
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是通过引入变量'handler'获得了什么 - 以下代码似乎工作正常:
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged!= null)
{
var e = new PropertyChangedEventArgs(propertyName);
PropertyChanged(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
局部变量背后的原因是,在多线程环境中,事件可能在检查null和触发事件之间的间隙中没有订户(即,变为空).
通过采用局部变量,您可以避免这个潜在的问题 - 以线程安全的方式检查事件.它确实引发了一个问题,即事件可能会被抛出以前未挂钩的项目.
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |