OnApplicationExit - удаление потоков в ThreadList - PullRequest
0 голосов
/ 10 февраля 2019

Я всегда располагал потоки в глобальном списке потоков (к которому я добавляю все вызванные потоки) после выхода из программы, и заметил во время последнего запуска (который не завершился), что число потоков никогда не опускалось ниже 44, поэтомуЦикл был активирован снова и никогда не выходил.Если посмотреть на остальные 44 темы в списке, их имена были «Ничего» и их статус был прерван.

Вопрос: что делать с прерванными потоками в списке потоков, которые не будут расположены?Нужно ли фильтровать по определенному состоянию потоков, а затем только удалять их?Или я могу просто пропустить этот метод и позволить 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
...