我有一个在它的开关的情况下,控制在一个事件处理多个按钮一个按钮单击事件处理程序。
我需要用一个队列,因为当一个按钮被点击,并做一些处理,第二个按钮点击不会与第一个按钮点击干扰,但添加到队列中。 我不想用.enabled=false;
因为它会完全放弃第二次点击,而我目前的作业编辑别人的软件,所以我不想打破的事情,我不知道,所以你有什么建议?
我有一个在它的开关的情况下,控制在一个事件处理多个按钮一个按钮单击事件处理程序。
我需要用一个队列,因为当一个按钮被点击,并做一些处理,第二个按钮点击不会与第一个按钮点击干扰,但添加到队列中。 我不想用.enabled=false;
因为它会完全放弃第二次点击,而我目前的作业编辑别人的软件,所以我不想打破的事情,我不知道,所以你有什么建议?
最好的办法,我认为,是创建一个生产者/消费者队列。
另一个问题是解释这种技术。
基本上,这个想法是有一个工作线程会消耗队列得到这份工作做,而在队列中排队操作其他线程产生的工作。
我做了这个成功System.Collections.Queue
该代码是:
private Queue<Button> Button_Queue = new Queue<Button>();
private bool isProcessing = false;
private void Button_Click((object sender, EventArgs e){
if(isProcessing){
Button_Queue.Enqueue(this);
}
else
{
isProcessing = true;
// code here
isProcessing = false;
while(Button_Queue.Count > 0){
Button_Queue.Dequeue().PerformClick();
}
}
当然我的是从这个略有不同,因为我需要通过一些变量和我的点击方法修改这一点。