gpt4 book ai didi

C# - 确保事件不堆叠

转载 作者:行者123 更新时间:2023-11-30 19:03:19 24 4
gpt4 key购买 nike

你好,

我有一个按钮单击事件,其中初始化了用户定义的类型,并设置了一个事件。

这个按钮被使用了很多次,我不希望事件堆叠。因此,我已取消订阅 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com