1

たとえば、次のような foreach ループを実行する場合など、Thread.Start を使用するときのスレッドのライフサイクルについて質問があります。

foreach(var item in MyList)
{
  var t = new Thread(ProcessRequest);
  t.Start(item);
}

private void ProcessRequest(ListItem item)
{
   //do something
}

この場合、N 個のスレッドが存在するので、これらすべてのライフサイクルは何ですか?

私はあなたの説明に感謝します

4

1 に答える 1

1

各スレッドは、ProcessRequest が終了するまで存在します。メソッドが戻ると、スレッドはスレッドプールに返され、再び使用されます。

スレッド オブジェクトへの参照を維持していなくても、フレームワークと OS によって参照されるため、スレッドの実行が少なくとも完了するまで解放されません。

于 2013-05-17T17:06:09.390 に答える