首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 多线程统制

2013-12-16 
c# 多线程控制如下代码:for (int i 0 i n i++){Thread t new Thread(new ParameterizedThreadStar

c# 多线程控制
如下代码:
for (int i = 0; i < n; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(get));
t.Start(i);
}

do();

我希望可以在for循环里的线程全部结束后,执行do()函数,请问,我该怎么控制呢?


[解决办法]
最简单的是用Task的WaitAll
Task<int, int>[] tasks = new Task<int, int>[n];
for (int i = 0; i < n; i++)
{
    tasks[i] = Task.Factory.StartNew(i => { get(i); return 0; });
}
Task.WaitAll(tasks);
[解决办法]
最好还是在线程中检查是否线程都执行完毕,在主线程这么阻塞的UI用户体验不好。
[解决办法]
为什么不把do放在线程的最后面做,

这样线程执行完后,do方法就会被调用。而且也不会影响到界面其它操作.

Task.Factory.StartNew(()=>
{
    for (int i = 0; i < n; i++)
   {
      get(i);
    }
   do();
});

热点排行