日期:2014-05-17  浏览次数:21008 次

C#For循环中的多线程是按for循环的顺序执行的吗?
本帖最后由 wjx515628 于 2013-10-18 14:33:11 编辑
 for (int i = 0; i < 100; i++)
            { 
               Thread th = new Thread(new ParameterizedThreadStart(method));
                th.Start(i);
            }     
    
这样传进多线程的参数i,总是混乱的,感觉好像for中的线程执行不是按循环的顺序执行的。例如第一次循环时new的线程,可能在第二次循环后才执行,这样i的值就是1了,不是第一次循环时的0了。请教大神解决方法?            

------解决方案--------------------
在th.Start(i);之后
加上Thread.Sleep(100);
------解决方案--------------------
for (int i = 0; i < 100; i++)
            { 
              int temp = i;
               Thread th = new Thread(new ParameterizedThreadStart(method));
                th.Start(temp);
            }