C#按钮点击排队(c# button click queueing)

2019-10-16 20:48发布

我有一个在它的开关的情况下,控制在一个事件处理多个按钮一个按钮单击事件处理程序。

我需要用一个队列,因为当一个按钮被点击,并做一些处理,第二个按钮点击不会与第一个按钮点击干扰,但添加到队列中。 我不想用.enabled=false; 因为它会完全放弃第二次点击,而我目前的作业编辑别人的软件,所以我不想打破的事情,我不知道,所以你有什么建议?

Answer 1:

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

另一个问题是解释这种技术。

基本上,这个想法是有一个工作线程会消耗队列得到这份工作做,而在队列中排队操作其他线程产生的工作。



Answer 2:

我做了这个成功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();
    }
}

当然我的是从这个略有不同,因为我需要通过一些变量和我的点击方法修改这一点。



文章来源: c# button click queueing