以下代码来自Josh Smith的MVVM示例:

/// <summary>
/// Raised when this workspace should be removed from the UI.
/// </summary>
public event EventHandler RequestClose;

void OnRequestClose()
{
    //if (RequestClose != null)
    //        RequestClose(this, EventArgs.Empty);
    EventHandler handler = this.RequestClose;
    if (handler != null)
        handler(this, EventArgs.Empty);
 }

带注释的行是我的补充。我的问题是,注释行与未注释行会做相同的事情吧?那么,为什么要创建另一个EventHandler引用呢?还是我在这里想念什么?谢谢

最佳答案

坦莫伊是对的。这样做是为了防止在“if”之后但在“RequestClose()”之前,其他线程中的RequestClose可能被更改(例如,为null)。

关于c# - Josh Smith的MVVM示例应用程序中有关EventHandler的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3757234/

10-09 07:39