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よく見てください。Task を使用していないため、メソッド Wait() または WaitAll() を使用できません。また、Join() は使用できません。Join は 1 つのスレッドを待機するためです。彼らがすでに作業を終えた待機スレッドを開始すると、無限に待機します。