【发布时间】:2009-08-06 16:21:48
【问题描述】:
我正在编写一个通常启动五个线程的程序。线程以不确定的顺序返回。每个线程都在调用一个返回 List 的方法。
我正在这样做:
var masterList = List<string>();
foreach (var threadParam in threadParams)
{
var expression = threadParam ;
ThreadStart sub = () => MyMethod(expressions);
var thread = new Thread(sub)
{
Name = expression
};
listThreads.Add(thread);
thread.Start();
}
var abort = true;
while (abort) //Wait until all threads finish
{
var count = 0;
foreach (var list in listThreads)
{
if (!list.IsAlive)
{
count++;
}
}
if (count == listThreads.Count)
{
abort = false;
}
}
那么问题来了:
每个线程终止时都会返回一个列表,我想附加之前声明的 masterList。
如何处理这个问题?
我也知道必须有比下面更好的方法来等待所有线程完成
var abort = true;
while (abort) //Wait until all threads finish
{
var count = 0;
foreach (var list in listThreads)
{
if (!list.IsAlive)
{
count++;
}
}
if (count == listThreads.Count)
{
abort = false;
}
}
【问题讨论】:
标签: c# multithreading