从空控件取消注册事件处理程序

时间:2014-09-06 13:06:24

标签: c# .net eventhandler

我正在尝试在程序结束时取消注册事件处理程序。它看起来像这样 -

myobject.EventHandler -= new MyEventHandler(MyMethod);

现在,我注意到在某些条件下,此语句会多次执行。该程序似乎按预期工作,但我想确认它没有做一些奇怪的事情。

当处理程序未注册时,第一次将object.EventHandler设置为NULL。那么可以多次执行这个语句吗?

由于

2 个答案:

答案 0 :(得分:1)

  

当处理程序未注册时,第一次将object.EventHandler设置为NULL。那么可以多次执行这个语句吗?

是的,没关系。它只是没有做任何事情。

顺便说一下,您不需要显式创建委托,您可以这样做:

myobject.EventHandler -= MyMethod;

(除非您仍然使用C#1,这在2014年似乎不太可能......)

答案 1 :(得分:1)

我同意这些评论,你应该研究为什么代码被执行多次,而它应该只执行一次,特别是因为执行的次数有所不同(根据你的描述)。

我猜这是来自asp.net?如果是这样,您需要注意某些控件上的autopostback属性,这些控件在触发某些事件时可能会触发父控件事件。我猜这个问题的原因是因为你曾经说过“有时候'因此,当不使用像按钮或文本框这样的控件时,它可能表现为正常'。虽然这只是纯粹的猜测,因为你的问题是缺乏细节......