【发布时间】:2013-07-01 22:30:34
【问题描述】:
我有创建 5 个线程的代码。我需要等待,直到所有线程完成工作,然后返回值。我该怎么做?
public static int num=-1;
public int GetValue()
{
Thread t=null;
for (int i = 0; i <=5; i++)
{
t = new Thread(() => PasswdThread(i));
t.Start();
}
//how wait all thread, and than return value?
return num;
}
public void PasswdThread(int i)
{
Thread.Sleep(1000);
Random r=new Random();
int n=r.Next(10);
if (n==5)
{
num=r.Next(1000);
}
}
当然,这不是真正的代码。实际代码要复杂得多,所以我简化了。
附:仔细看。 我没有使用Task,所以不能使用方法Wait() 或WaitAll()。我也不能使用 Join(),因为 Join 等待一个线程。如果他们启动已经完成工作的等待线程,则将无限等待。
【问题讨论】:
-
您期望
num是什么?这不会扩展到实际代码。 -
@jon-maximys 转到 Visual Studio,工具> 选项> 文本编辑器> 所有语言> 选项卡 并选择 插入空格 选项
-
你可以使用 thread.waitall()。
标签: c# multithreading