c#按钮点击排队

时间:2012-06-19 07:31:32

标签: c# winforms events click queue

我有一个按钮单击事件处理程序,其中有一个switch case,用于控制一个事件处理程序中的多个按钮。

我需要使用一个队列,因为当点击一个按钮并进行一些处理时,第二个按钮点击不会干扰第一个按钮点击,而是添加到队列中。我不想使用.enabled=false;,因为它会完全丢弃第二次点击,我正在编辑某人的软件,所以我不想打破我不知道的事情,那么什么你在暗示吗?

2 个答案:

答案 0 :(得分:1)

我认为最好的想法是创建一个生产者/消费者队列。

另一个question正在解释这种技术。

基本上,我们的想法是让一个工作线程使用队列来完成工作,而其他线程则通过队列中的排队操作来产生作业。

答案 1 :(得分:0)

我用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();
    }
}

当然我的与此略有不同,因为我需要传递一些变量,并为此修改了我的click方法。