C#禁用事件处理程序问题

bil*_*lal 2 c# events event-handling

我正在使用textchanged事件,我禁用它,我不需要如下所示

object.Event -= new System.EventHandler(myHandler);
//my code which doesn't need event handler
object.Event += new System.EventHandler(myHandler);
Run Code Online (Sandbox Code Playgroud)

我曾多次使用这样的话.但我有时需要2个禁用代码,如下所示:

object.Event -= new System.EventHandler(myHandler);
object.Event -= new System.EventHandler(myHandler);
Run Code Online (Sandbox Code Playgroud)

当然我用2启​​用代码完成了它

object.Event += new System.EventHandler(myHandler);
object.Event += new System.EventHandler(myHandler);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我需要2次删除事件处理程序,但它工作得很好.

但在1例中我遇到了问题.

它不适用于2个或更多禁用代码.

我的问题是,如果它只需要一个 - =代码或更多,我怎么能看到这个事件处理程序?或者我该如何管理呢?我总是像这样工作,以确保我总是第一次离开事件处理程序

object.Event -= new System.EventHandler(myHandler);
//my code which doesn't need event handler
object.Event += new System.EventHandler(myHandler);
Run Code Online (Sandbox Code Playgroud)

Wil*_*ean 10

我的建议是停止删除并重新添加事件处理程序,而是向事件处理程序本身添加一个标志,该标志禁止在这些代码段中需要禁止的任何活动.

您可以使用单个布尔标志,也可以使用某种引用计数,具体取决于您需要如何处理嵌套.

如果有一些原因导致您无法更改现有的事件处理程序,那么创建一个附加到Event的新事件处理程序,并从中调用旧事件呢?