我有一个多线程问题。C#多线程,循环停止所有进度的线程
我正在做一个项目,我们有一列火车,铁路道口和一辆汽车。 火车正在移动,如果需要的话,铁路道口和汽车停下来。所有三件事都在不同的线程上。 有2个按钮,一个开始移动火车,第二个开发一个新的PictureBox汽车。
移动火车我只使用for
循环,由Invoke
改变了PictureBox的位置。 铁路道口仅检查列车位置,并在火车位于特定位置时将灯光变为红色。
创建赛车看起来是这样的:
private void Operation1()
{
this.BeginInvoke((MethodInvoker)delegate()
{
PictureBox a = new PictureBox();
a.Location = new Point(333, 361);
a.BackColor = Color.Black;
a.Size = new Size(20, 37);
Controls.Add(a);
});
}
该车创建和它的罚款。 现在我想移动车Operation1()
与循环是这样的:
private void Operation1()
{
this.BeginInvoke((MethodInvoker)delegate()
{
PictureBox a = new PictureBox();
a.Location = new Point(333, 361);
a.BackColor = Color.Black;
a.Size = new Size(20, 37);
Controls.Add(a);
for (int i = 0; i < 140; i++)
{
a.Location = new Point(a.Location.X, a.Location.Y - 3);
Thread.Sleep(50);
}
});
}
但是,当它启动车子消失,如果其他线程运行它停止,等待,直到这个循环结束。 问题在哪里?我希望有人能尽快帮助我。
没有什么导致窗体重绘,看看http://stackoverflow.com/questions/2376998/force-form-to-redraw – tolanj 2014-10-27 14:25:26
好吧,消失的汽车问题已消失。但奇怪,我不使用它在火车和它的工作:)。不管怎样,谢谢你。 但是,仍然不知道为什么其他线程停止循环时 – addictive 2014-10-27 14:50:07