HI,
我有一个按钮单击事件,其中初始化用户定义的类型,并设置事件.
这个按钮被多次使用,我不希望事件堆叠.因此,我已经取消订阅了finally块中的事件.
代码类似于以下内容:
try {
bar = new foo();
bar.event += new event(method);
dosomething()
}
finally {
bar.event -= new event(method);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止似乎工作正常,但是我关注在doSomething方法完成之前正在处理的finally块,从而使用了事件.
是否允许该方法在调用finally块之前进行处理?
我通常做的是有一个inEvent布尔变量,每次触发一个事件时都会检查它.代码如下所示:
bool inEvent = false;
...
private void Button1_Click(object source, EventArgs e)
{
if (inEvent)
return;
try
{
inEvent= true;
dosomething();
}
finally
{
inEvent = false;
}
}
Run Code Online (Sandbox Code Playgroud)