【发布时间】:2016-04-14 04:35:30
【问题描述】:
众所周知,我们可以创建一个 EventHandler 并向其添加方法 N 次。喜欢:
// Declare and EventHandler
public event EventHandler InternetConnectionAvailableEvent;
private void OnInternetConnectionAvailableEvent()
{
if (InternetConnectionAvailableEvent != null)
{
EventHandler handle = InternetConnectionAvailableEvent;
EventArgs e = EventArgs.Empty;
handle(this, e);
}
}
// IN OTHER CLASS WHERE I USE THE EVENT
// Set the method name to handle the event
monitorInternet.InternetConnectionAvailableEvent += HandleInternetConnectionEvent;
void HandleInternetConnectionEvent(object sender, EventArgs e)
{
if (syncContext != null)
{
MonitorInternetConnection mic = (MonitorInternetConnection)sender;
if (mic != null)
{
syncContext.Post(o => InternetConnected(), null);
}
}
}
// To remove
monitorInternet.InternetConnectionAvailableEvent -= null;
更新:
// To remove it should be
monitorInternet.InternetConnectionAvailableEvent -= HandleInternetConnectionEvent; // CORRECT
同一个方法可以多次调用而不用删除。
如果我创建monitorInternet.InternetConnectionAvailableEvent -= null;,所有的事件处理程序都会被删除。我的意思是如果它被设置 2-3 次,并且只删除一次,通过使其为 null,所有其他方法也将自动删除。
我相信会的,但我只是想与各位专家确认一下。在谷歌搜索时,我没有得到我要求的令人满意的答案。
如有错误请指正。
【问题讨论】:
标签: c# events event-handling