つい最近、面接でそのような質問に直面しました
メソッド 'Calculate' の実行結果は次のようになります。
public void Calculate()
{
var threads = Enumerable.Range(0, 50).Select(x =>
{
var thread = new Thread(DoWork)
{
Name = x.ToString()
};
return thread;
});
foreach (var thread in threads)
{
thread.Start();
}
foreach (var thread in threads)
{
thread.Join();
}
}
private void DoWork()
{
Console.WriteLine("Start()");
}
VS で確認したところ、「thread.Join();」行で ThreadStateException がスローされることに驚きました。デバッガーを使用して、スレッドが開始されていないことがわかりました。2 番目の foreach を実行すると、別のスレッドのコレクションを処理しているようです。例外がスローされる理由を詳しく説明してください。
前もって感謝します!