我有活动
button.Click += ProcessClick;
Run Code Online (Sandbox Code Playgroud)
我的事件处理程序ProcessClick是:
private void async ProcessClick(object o, EventArgs e){
await LongOperation()
}
Run Code Online (Sandbox Code Playgroud)
当我快速点击按钮多次时, 如何只处理第一个线程并跳过其他线程,直到第一个完成?
首次点击后禁用按钮不是解决方案......
编辑:利用任何类型的线程结构是可以接受的:任务,信号量,锁等.
您可以在第一次单击后删除该事件,并在处理第一次单击结束时再次添加该事件.
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;
}
Run Code Online (Sandbox Code Playgroud)