这是我的代码:
Thread _th1, _th2, _th3, _th4;
int _i;
void thMethod()
{
while(_i < 100){
Thread.Sleep((new Random()).Next(1,500));
Application.DoEvents();
Console.WriteLine(_i);
_i++;
}
}
private void button4_Click(object sender, EventArgs e)
{
_th1 = new Thread(new ThreadStart(thMethod));
_th1.Start();
_th2 = new Thread(new ThreadStart(thMethod));
_th2.Start();
_th3 = new Thread(new ThreadStart(thMethod));
_th3.Start();
_th4 = new Thread(new ThreadStart(thMethod));
_th4.Start();
}
我想要做的是,使用多线程从 0 到 99 执行 Console.WriteLine,并且延迟是随机的。
但是,我的代码打印重复的数字
好吧,这就是结果。
0 1 2 2 4 5 6 7 8 9 10 10 12 13 14 14 16 16 18 19 20 20 22 22 24 24 26 26 28 28 30 31 32 33 34 35 36 36 38 39 40 40 42 42 4 4 4 4 4 64 6 50 52 68 70 70 72 74 74 74 76 76 78 78 80 80 82 82 80 90 98 98 98 100 101 102
如您所见,打印了重复的数字,甚至没有停止在 99。
那么...如何更正此代码以使其正常运行?
====================== 我必须改变吗..
void thMethod()
{
while(_i < 100){
Thread.Sleep((new Random()).Next(1,500));
Application.DoEvents();
Interlocked.Increment(ref _i);
Console.WriteLine(_i);
}
}
这?