我在代码中有一个事件处理程序,当我期望它只被调用一次时,我看到它被多次调用。
在过去,这是因为我在错误的地方定义了委托(这样就有一个委托被添加到事件处理列表中),但是在这个occastion中,它只被设置一次(在类构造函数中)。
与其继续在代码中手动搜索错误,我是否可以采用(简单的)实用方法来确定事件处理程序的分配位置?

最佳答案

您可以替换默认值:

public event EventHandler MyEvent;

…与
private EventHandler _myEvent;

public event EventHandler MyEvent
{
    add { _myEvent += value; }
    remove { _myEvent -= value; }
}

然后,可以将日志记录或断点放在add/remove函数中并查看调用堆栈。

08-06 18:58