1

当我使用 Thread.Start 时,我对线程的生命周期有疑问,例如,如果执行这样的 foreach 循环:

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 完成。一旦方法返回,线程将返回到线程池以再次使用。

即使您没有维护对框架和操作系统引用的线程对象的引用,所以在线程至少完成运行之前它不会被释放。

于 2013-05-17T17:06:09.390 回答