该方法完成后该线程会发生什么?

时间:2010-06-15 14:52:29

标签: multithreading asp.net-2.0

在我的ASP.NET应用程序中,我会在堆栈中调用以下代码:

Public Shared Sub Larma(ByVal personId As Integer)
    Dim thread As New System.Threading.Thread(New ParametrizedThreadStart(AddressOf Larma_Thread))
    thread.Start(personId)
End Sub

Private Shared Sub Larma_Thread(ByVal personId As Integer)
    StartaLarm(personId)
    Thread.Sleep(1000 * 30)
    StoppaLarm(personId)
End Sub

当此线程正在运行时,将处理其余请求并将响应发送到客户端。但是,由于我从不调用thread.Abort()或类似的东西,而且我对ASP.NET中的线程非常缺乏经验,我担心我会因内存泄漏或其他线程问题而开放。

Larma_Thread完成运行后,我从上面的代码开始的线程会发生什么?

2 个答案:

答案 0 :(得分:1)

线程代码完成执行后,线程将被停止并回收其资源。

答案 1 :(得分:1)

一旦完成工作,线程将被终止。

请注意,线程也可能在您的工作完成之前终止我IIS确定它需要回收ASP.NET工作线程。