PropertyChanged - null和/或由另一个线程更改 - 实际示例?

时间:2014-03-08 11:56:37

标签: c# wpf multithreading mvvm

每个人都看过基本示例

private void RaisePropertyChanged(string propertyName)
{
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null)
    {
        handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

但是,作为WPF和MVVM的初学者,我无法在PropertyChanged事件中找到实际示例
1. null
2. 被另一个线程更改。

有人能给我一个实际的例子吗?

1 个答案:

答案 0 :(得分:2)

如果您的运行单元在ViewModel上进行测试,则可能是子弹1( null )的实际示例。在这种情况下,没有绑定到ViewModel的UI,并且如果测试方法(Test1)在没有订阅PropertyChanged事件的情况下更新属性,您将获得{ {1}}。

如果第二次单元测试(NullReferenceException)同时运行,则子弹2(线程)的实际示例(线程)可能如上面的Test1在另一个线程中。第二个测试 在Test1无意中触发事件之前的某个时间订阅了该事件,但是在Test2测试的中间再次取消订阅:

if