これは私が常にイベントライザーを書いた方法です。 PropertyChanged例えば:C#のnull条件付きデリゲート呼び出しスレッドセーフですか?
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string name)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(name));
}
最新のVisual Studioで、しかし、電球thingamabobはこれにコードを簡素化提案:
private void RaisePropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
私は簡素化の賛成で常にだが、私がしたかったですこれが安全であることを確認してください。私の元のコードでは、nullチェックと呼び出しの間に加入者が配置される可能性のある競合状態を防ぐために、ハンドラを変数に割り当てます。新しい簡素化されたフォームがこの状態に苦しむだろうと私には思われますが、誰かがこれを確認したり拒否できるかどうかを見たいと思っていました。