- Код: Выделить всё
'На формочке 2 кнопочки bStart и bStop + лейбл Lable1
Imports System.Threading
Public Class Main
Public Temp As New Temp
Private Sub bStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bStop.Click
Temp.StopFlag = True
bStart.Enabled = True
End Sub
Private Sub bStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bStart.Click
Temp.StopFlag = False
bStart.Enabled = False
Dim t As New Thread(AddressOf Temp.DoTheWork)
t.Start(0)
Dim t2 As New Thread(AddressOf Temp.DoTheWork)
t2.Start(9999999)
End Sub
End Class
- Код: Выделить всё
Public Class Temp
Public StopFlag As Boolean
Delegate Sub InvokeDelegate(ByVal Message As Integer)
Public Sub Print(ByVal Message As Integer)
Main.Label1.Text = Message
End Sub
Sub DoTheWork(ByVal start As Integer)
Dim Message As Integer = start
Do
Main.Label1.BeginInvoke(New InvokeDelegate(AddressOf Print), Message)
Thread.Sleep(1)
Message += 1
Loop Until StopFlag
End Sub
End Class
Вылетает с ошибкой - "Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна." на Main.Label1.BeginInvoke
А если сложить всё в один класс, то проблем нет.
Как вызвать поток из соседнего класса и при этом обращаться к контролам в форме?