Обращение к 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы