我有事件
button.Click += ProcessClick;
我的事件处理程序 ProcessClick
是:
private void async ProcessClick(object o, EventArgs e){
await LongOperation()
}
当我多次快速点击按钮时, 如何只处理第一个线程并跳过其他线程,直到第一个线程完成?
第一次点击后禁用按钮不是解决方案...
编辑:使用任何类型的线程结构都是可以接受的:任务、信号量、锁等等。
最佳答案
您可以在第一次点击后删除事件,并在处理完第一次点击后再次添加。
private async void button1_Click(object sender, EventArgs e)
{
Debug.Write("Running click event");
this.button1.Click -= button1_Click;
await Task.Run(() => Task.Delay(5000));
this.button1.Click += button1_Click;
}
关于c# - .net 线程安全的多次点击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739165/