C# .NET事件处理程序管理
我看到代码中有一个事件处理程序被多次调用,而我希望它只被调用一次 在过去,这是因为我在错误的位置定义了委托(因此更多的委托被添加到事件处理列表中),但是在这个事件中,这只被设置一次(在类构造函数中)C# .NET事件处理程序管理,c#,event-handling,C#,Event Handling,我看到代码中有一个事件处理程序被多次调用,而我希望它只被调用一次 在过去,这是因为我在错误的位置定义了委托(因此更多的委托被添加到事件处理列表中),但是在这个事件中,这只被设置一次(在类构造函数中) 有没有一种(简单)实用的方法可以用来找出事件处理程序的分配位置,而不是继续手动搜索我的代码以查找错误?您可以替换默认值: public event EventHandler MyEvent; …与 private EventHandler _myEvent; public event Event
有没有一种(简单)实用的方法可以用来找出事件处理程序的分配位置,而不是继续手动搜索我的代码以查找错误?您可以替换默认值:
public event EventHandler MyEvent;
…与
private EventHandler _myEvent;
public event EventHandler MyEvent
{
add { _myEvent += value; }
remove { _myEvent -= value; }
}
然后,您可以在添加/删除函数中放置日志记录或断点,并查看调用堆栈。如果您使用的是vb.net,那么您确定没有在方法中添加处理程序,也没有使用handles关键字吗
这会导致事件被处理两次。安装,然后右键单击事件并选择“查找用法”。我有一个代码。它的两个类用于帮助访问事件 在我的代码中介绍: 现在,您可以调试输入的事件
CSoft.Core.EventHelper.Raise();
您可以更改名称(不使用Visual Studio重新分解工具,只需在代码中更改名称)并查看编译器在哪里中断。好主意,但这同样侧重于手动搜索。我也在用C#。无论如何,谢谢。我很想去,但我没有执照也没有预算:-(我想说它在大约一个月内就可以自己付钱了。我永远不会接受没有(或类似的东西)的工作再一次。这是一个非常简单和简洁的解决方案-就像一个符咒。谢谢。好建议,但罗杰斯的定制存取器的想法非常简单,就像一个符咒。谢谢你的输入。马克