读书人

c# 多线程统制

发布时间: 2013-12-16 23:49:16 作者: rapoo

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();
});

读书人网 >C#

热点推荐