Обращение к Label из потока - Visual Basic .NET
Формулировка задачи:
Доброго времени!
Форма, на форме кнопка запуска и 2 штуки label, видимый "работаю" и невидимый "жду".
Создаем отдельный поток, в котором выполняется программа в цикле. В какой-то момент программы ставим поток на паузу, в это время на форме надо переключить видимости лэйблов (чтобы вместо "работаю" была надпись "жду") пробовал сам, получил ошибку "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'Form1' не из того потока, в котором он был создан." Как это правильно делается?
Вот код:
Решение задачи: «Обращение к Label из потока»
textual
Листинг программы
Public Class Form1 Dim Th As System.Threading.Thread Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label2.Visible = True 'Включаем надпись "Работаю" Th = New System.Threading.Thread(AddressOf Checker) Th.Start() End Sub Sub Checker() Do '''''выполняется некая программа в цикле, отношения к вопросу не имеет Me.Label1.Invoke(New ThreadStart(AddressOf forLabel1)) Me.Label2.Invoke(New ThreadStart(AddressOf forLabel2)) Shell("С:\start.bat") Threading.Thread.Sleep(60000) Me.Label1.Invoke(New ThreadStart(AddressOf forLabel1)) Me.Label2.Invoke(New ThreadStart(AddressOf forLabel2)) '''' продолжает выполняться программа Threading.Thread.Sleep(10000) Loop End Sub Sub forLabel1() If Label1.Visible = True Then Label1.Visible = False Else Label1.Visible = True End If End Sub Sub forLabel2() If Label2.Visible = True Then Label2.Visible = False Else Label2.Visible = True End If End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д