C# 如何在c中清除事件句柄#
我正在使用名为“client”的全局变量 比如说C# 如何在c中清除事件句柄#,c#,event-handling,C#,Event Handling,我正在使用名为“client”的全局变量 比如说 client.getPagesCompleted += (s, ee) => { pages = ee.Result; BuildPages(tvPages.Items, 0); wait.Close(); }; client.getPagesAsync(cat.MainCategoryID); 我需要清除getPagesCompleted的处理程序,并设置另一个处理程序如何轻松清除手柄? 我知道client.ge
client.getPagesCompleted += (s, ee) =>
{
pages = ee.Result;
BuildPages(tvPages.Items, 0);
wait.Close();
};
client.getPagesAsync(cat.MainCategoryID);
我需要清除getPagesCompleted
的处理程序,并设置另一个处理程序如何轻松清除手柄?
我知道
client.getPagesCompleted-=newEventHandler(…)
。但这是非常困难的。我需要简单的方法。
我正在使用
client.getPagesCompleted=null
,但显示了错误“仅使用+=-+”
将事件对象保存到变量,并使用-=
取消订阅。将事件对象保存到变量,并使用-=
取消订阅。删除事件处理程序的唯一方法是使用-=
构造与通过+=
添加的处理程序相同的处理程序
如果需要添加和删除处理程序,则需要在命名方法中对其进行编码,而不是使用匿名方法/委托。删除事件处理程序的唯一方法是使用
-=
构造与通过+=
添加的处理程序相同
如果需要添加和删除处理程序,则需要在命名方法中对其进行编码,而不是使用匿名方法/委托。您不必将事件处理程序放在单独的方法中;您仍然可以使用lambda函数,但需要将其分配给委托变量。比如:
MyEventHandler handler = (s, ee) =>
{
pages = ee.Result;
BuildPages(tvPages.Items, 0);
wait.Close();
};
client.getPagesCompleted += handler; // Add event handler
// ...
client.getPagesCompleted -= handler; // Remove event handler
您不必将事件处理程序放在单独的方法中;您仍然可以使用lambda函数,但需要将其分配给委托变量。比如:
MyEventHandler handler = (s, ee) =>
{
pages = ee.Result;
BuildPages(tvPages.Items, 0);
wait.Close();
};
client.getPagesCompleted += handler; // Add event handler
// ...
client.getPagesCompleted -= handler; // Remove event handler