我在代码中有一个事件处理程序,当我期望它只被调用一次时,我看到它被多次调用。
在过去,这是因为我在错误的地方定义了委托(这样就有一个委托被添加到事件处理列表中),但是在这个occastion中,它只被设置一次(在类构造函数中)。
与其继续在代码中手动搜索错误,我是否可以采用(简单的)实用方法来确定事件处理程序的分配位置?
最佳答案
您可以替换默认值:
public event EventHandler MyEvent;
…与
private EventHandler _myEvent;
public event EventHandler MyEvent
{
add { _myEvent += value; }
remove { _myEvent -= value; }
}
然后,可以将日志记录或断点放在add/remove函数中并查看调用堆栈。