事件不排队

时间:2013-11-30 16:24:56

标签: c#

我正在尝试处理多个按钮单击事件,以便使用Queue()一个接一个地执行事件。不知何故,当我打印Count时没有事件排队,我无法弄清楚原因。代码如下。

        private void callBtn0_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            if ((btn.Name == ("btn" + 0))
            {
                buttonQueue.Enqueue(btn);
                closeDoors();
            }
            else if ((btn.Name == ("btn" + 1))
            {
                buttonQueue.Enqueue(btn);
                closeDoors();
            }
            while(buttonQueue.Count > 0)
            {
                buttonQueue.Dequeue();
                listBox.Items.Add("Number: " + buttonQueue.Count);
            }

2 个答案:

答案 0 :(得分:2)

您正在将刚刚添加的项目出列,因此下一次调用Count将返回零:

// add one item

while(buttonQueue.Count > 0) // Count is 1
{
    buttonQueue.Dequeue(); // remove one item
    listBox.Items.Add("Number: " + buttonQueue.Count); // Count is 0
}

答案 1 :(得分:1)

在现有调用完成之前,无法执行对callBtn0_Click的后续UI线程调用。根据您的代码,只有1个项目可以在队列中,并在添加后立即将所述项目出列。

我建议您阅读有关UI线程和消息泵的信息