Правильно завершить поток - Visual Basic .NET
Формулировка задачи:
Прошу помощи людей, хорошо разбирающихся в многопоточности. Из-за зависания формы приложения во время долгого выполнения (не отвечают никакие элементы управления) пришёл к воплощению многопоточности в дело. Но если делегаты и потоки удалось освоить, то правильно завершить эти потоки никак не удаётся. К сожалению во всей литературе и на форумах не нашёл ответа на этот вопрос, везде речь о создании потока, а не о завершении во время его выполнения. Привожу сильно упрощённый вариант, где в качестве комментарий заключены различные попытки завершения потока. Одна кнопка запускает поток, другая его должна завершать. Вот как это воплотить?
Буду рад любым советам, хотя различнейшие варианты уже перепробовал...
Решение задачи: «Правильно завершить поток»
textual
Листинг программы
Public Delegate Sub ДелегатТекст(ByVal text As String) Public Delegate Sub ДелегатЦифр(ByVal text As Integer) Public ext As Boolean = False Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Button1.Text = "Старт" Button2.Text = "Стоп" End Sub ' Делегат 1 Private Sub ListBox(s As String) If ListBox1.InvokeRequired Then Me.Invoke(New ДелегатТекст(AddressOf ListBox), s) Else ListBox1.Items.Add(s) End If End Sub ' Делегат 2 Private Sub Label(s As Integer) If Label1.InvokeRequired Then Me.Invoke(New ДелегатЦифр(AddressOf Label), s) Else Label1.Refresh() Label1.Text = s End If End Sub ' Процесс потока Public Sub Процесс_потока(ByVal ИменаФайлов As System.Object) ' Процесс потока For a = 0 To 100000 Label(a) ListBox(a) If ext Then Exit For Next End Sub 'Запуск потока Public Sub Кнопка_Старт(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim Поток As New System.Threading.Thread(AddressOf Процесс_потока) Поток.Start() End Sub 'Остановка потока Public Sub Кнопка_Стоп(sender As System.Object, e As System.EventArgs) Handles Button2.Click ext = True End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д