我有创建 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);
}
}
当然,这不是真正的代码。实际代码要复杂得多,所以我对其进行了简化。
PS仔细看。我不使用任务,所以我不能使用方法 Wait() 或 WaitAll()。我也不能使用 Join(),因为 Join 等待一个线程。如果他们启动已经完成工作的等待线程,则将无限等待。