如何在c#中清除事件句柄

eba*_*lga 1 c# event-handling

我正在使用名为"client"的全局变量

例如

client.getPagesCompleted += (s, ee) =>
{
    pages = ee.Result;
    BuildPages(tvPages.Items, 0);
    wait.Close();
};
client.getPagesAsync(cat.MainCategoryID);
Run Code Online (Sandbox Code Playgroud)

我需要清除处理程序getPagesCompleted并设置另一个处理程序.
如何轻松清除手柄?
我知道client.getPagesCompleted-=new EventHandler(...).但这很困难.我需要简单的方法.我正在使用client.getPagesCompleted=null但显示错误."only use += / -+"

Chr*_*isF 6

删除事件处理程序的唯一方法是使用-=与您添加的处理程序相同的构造+=.

如果需要添加和删除处理程序,则需要在命名方法中对其进行编码,而不是使用匿名方法/委托.