我正在尝试处理多个按钮单击事件,以便使用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);
}
答案 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线程和消息泵的信息