我有一個多線程問題。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