我有一些C#代码可以更新对象的某些属性.我定义了一个事件处理程序,以帮助我在更新过程完成时做出响应.不幸的是,我已经了解到这个事件多次被解雇.我怀疑这种情况正在发生,因为事件处理程序正在错误的时间设置.目前,它的设置如下:
myObject.Update_Succeeded += new EventHandler(myObject_Update_Succeeded);
Run Code Online (Sandbox Code Playgroud)
由于代码的复杂性,我很难跟踪它应该设置的位置.我想只设置它之前没有设置的事件处理程序.因此,我想做这样的事情:
ClearEventHandlers(myObject);
Run Code Online (Sandbox Code Playgroud)
要么
myObject.Update_Succeeded = null;
myObject.Update_Succeeded += new EventHandler(myObject_Update_Succeeded);
Run Code Online (Sandbox Code Playgroud)
有没有办法完成我正在尝试的东西?
谢谢!
是的,您可以自定义事件的添加/删除访问者.本文介绍了这些访问器.但你可以这样做:
class MyClass
{
private EventHandler _myEvent;
public event EventHandler MyEvent
{
[MethodImpl(MethodImplOptions.Synchronized)]
add
{
_myEvent = (EventHandler)Delegate.Combine(_myEvent, value);
}
[MethodImpl(MethodImplOptions.Synchronized)]
remove
{
_myEvent = (EventHandler)Delegate.Remove(_myEvent, value);
}
}
public void ClearMyEvent() {
_myEvent = null;
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6558 次 |
| 最近记录: |