在C#中,防止事件重入(即同一个事件处理器在未完成之前再次被触发)是一个常见的需求,尤其是在处理UI事件或长时间运行的操作时。以下是几种防止事件重入的方法:
1. 使用标志变量
最简单的方法是使用一个布尔标志来跟踪事件处理器是否正在执行。
Csharp
深色版本
private bool _isProcessing = false;
private void OnSomeEvent(object sender, EventArgs e)
{
if (_isProcessing)
{
return; // 如果已经在处理,则直接返回
}
try
{
_isProcessing = true;
// 处理事件的代码
}
finally
{
_isProcessing = false;
}
}
2. 禁用事件源
在事件处理器开始时禁用事件源,处理完毕后再重新启用。
Csharp
深色版本
private void OnSomeEvent(object sender, EventArgs e)
{
someControl.Enabled = false;
try
{

439

被折叠的 条评论
为什么被折叠?



