OnApplicationExit-将线程分配到ThreadList中

时间:2019-02-09 22:47:00

标签: vb.net multithreading garbage-collection dispose

我一直在程序退出时将线程放置在全局线程列表(将所有调用的线程添加到其中)中,并在最近一次运行(未结束)中注意到,线程数从未降到44以下,因此循环再次被激活,从未退出。当查看列表中其余的44个线程时,它们的名称为“ Nothing”,其状态被中止。

问题是:如何处理不会处理的线程列表中的中止线程?我是否需要筛选线程的特定状态,然后仅处置它们?还是我可以跳过此方法,让GC清理内存中的线程?

    Sub OnApplicationExit()
        Dim currentThreads As ProcessThreadCollection = Process.GetCurrentProcess().Threads
        For Each thread As ProcessThread In currentThreads
            thread.Dispose()
        Next
cont:
        For Each thr As Thread In threadList
            Try
                If thr IsNot Nothing Then
                    thr.Abort()
                End If
            Catch ex As ThreadAbortException
                'ex.ToString()
            End Try
        Next
        If threadList.Count > 0 Then GoTo cont

    End Sub

0 个答案:

没有答案