2013-05-17 26 views
1

我有一个关于线程的生命周期问题,当我使用Thread.Start,例如如果做一个foreach循环像这样的:C#Thread.Start生命周期

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

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

在这种情况下,它会存在N个线程,那么所有这些的生命周期是什么?

我会感谢您的解释

回答

1

每个线程都存在,直到它的ProcessRequest完成。一旦方法返回,线程就返回到线程池再次使用。

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

+0

+1,线程池部分除外。它不会用在问题提供的示例代码中 –