我是C#的新手。我只想知道多次附加事件处理程序是否会导致意外的结果?
实际上,在我的应用程序中,我将一个事件处理程序附加到一个事件上,比如
cr.ListControlPart.Grid.CurrentCellActivated += new EventHandler(Grid_CurrentCellActivated);
这行代码在代码中被多次调用。
发布于 2013-10-11 17:49:00
你自己试试吧:
static class Program
{
static event EventHandler MyEvent;
static void Main()
{
// registering event
MyEvent += Program_MyEvent;
MyEvent += Program_MyEvent;
MyEvent += Program_MyEvent;
MyEvent += Program_MyEvent;
MyEvent += Program_MyEvent;
// invoke event
MyEvent(null, EventArgs.Empty);
Console.ReadKey();
}
static void Program_MyEvent(object sender, EventArgs e)
{
Console.WriteLine("MyEvent fired");
}
}
输出:
MyEvent fired
MyEvent fired
MyEvent fired
MyEvent fired
MyEvent fired
发布于 2013-10-11 17:50:49
您可以在添加之前通过取消订阅来阻止它。
Object.Event -= EventHandler(method);
Object.Event += EventHandler(method);
如果可以,可以通过总是在一个地方订阅事件来防止它,比如构造函数
https://stackoverflow.com/questions/19314983
复制相似问题