.NET Thread Finalizer 线程问题

.NET Thread Finalizer thread issue

我的应用程序中有以下代码。该应用程序是一个 WindowsService,一旦服务启动,就会触发 DoSomethingInTheading 方法。

Public Sub DoSomethingInThreading()
    While True
    Dim completeEvent As New ManualResetEvent(False)
    Dim thread as Thread = New Thread(AddressOf DoSomeThingElse)
    If Not completeEvent.WaitOne(120000) Then
        Throw New SystemException("Issue in terminating")
    End If
    End While
End Sub

Public Sub DoSomeThingElse(Dim state as Object)
    Dim finishEvent as ManualResetEvent = DirectCast(state, ManualResetEvent)
    'Do I/O operation, this doesnt take more time (hardly in seconds)
    finishEvent.Set()
End Sub

现在当我有大约 2500~3000 个线程时,一切似乎都很好。一旦它在这个限制之后开始建立起来,我就会让应用程序 运行 内存不足,或者有时应用程序会停止响应。我的假设是任务完成后线程将被 GC 清除(意味着在 Finalizer 线程中)。

我的问题是:

  1. Finalizer 线程是否像其他对象一样收集线程?
  2. 我是否需要手动执行任何清理线程? CLR 不会处理它吗?
  3. 我的应用程序是 .NET 3.5。我知道我可以继续使用 ThreadPool 和 TPL,但由于各种原因我需要坚持使用 .NET 3.5

任何 suggestions/helps - 非常感谢。

.Net 3.5 仍然允许 ThreadPool(它只是不允许 TPL)。要启动线程,只需执行以下操作:

System.Threading.ThreadPool.QueueUserWorkItem(AddressOf DoSomethingElse)