你好,
我有一个按钮单击事件,其中初始化了用户定义的类型,并设置了一个事件。
这个按钮被使用了很多次,我不希望事件堆叠。因此,我已取消订阅 finally block 中的事件。
代码类似下面:
try {
bar = new foo();
bar.event += new event(method);
dosomething()
}
finally {
bar.event -= new event(method);
}
到目前为止它似乎工作正常,但是我担心在 doSomething 方法完成之前处理 finally block 并因此使用该事件。
是否允许该方法在调用 finally block 之前进行处理?
最佳答案
我通常做的是有一个 inEvent bool 变量,每次触发事件时都会检查它。代码将如下所示:
bool inEvent = false;
...
private void Button1_Click(object source, EventArgs e)
{
if (inEvent)
return;
try
{
inEvent= true;
dosomething();
}
finally
{
inEvent = false;
}
}
关于C# - 确保事件不堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352874/