我正在尝试在程序结束时取消注册事件处理程序。它看起来像这样 -
myobject.EventHandler -= new MyEventHandler(MyMethod);
现在,我注意到在某些条件下,此语句会多次执行。该程序似乎按预期工作,但我想确认它没有做一些奇怪的事情。
当处理程序未注册时,第一次将object.EventHandler设置为NULL。那么可以多次执行这个语句吗?
由于
答案 0 :(得分:1)
当处理程序未注册时,第一次将object.EventHandler设置为NULL。那么可以多次执行这个语句吗?
是的,没关系。它只是没有做任何事情。
顺便说一下,您不需要显式创建委托,您可以这样做:
myobject.EventHandler -= MyMethod;
(除非您仍然使用C#1,这在2014年似乎不太可能......)
答案 1 :(得分:1)
我同意这些评论,你应该研究为什么代码被执行多次,而它应该只执行一次,特别是因为执行的次数有所不同(根据你的描述)。
我猜这是来自asp.net?如果是这样,您需要注意某些控件上的autopostback属性,这些控件在触发某些事件时可能会触发父控件事件。我猜这个问题的原因是因为你曾经说过“有时候'因此,当不使用像按钮或文本框这样的控件时,它可能表现为正常'。虽然这只是纯粹的猜测,因为你的问题是缺乏细节......