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