Vb2017: что и зачем вызывать и делегировать?
Всем привет,
В приведенном ниже коде я изучаю многопоточность.
Код работает нормально но только благодаря субмарине:
Частная суб методе form1_load (как byval отправителя как системы.Объект, asSystem бывал.EventArgs) Обрабатывает MyBase.Load
Меня.CheckForIllegalCrossThreadCalls = Ложь
Конец Подводной Лодки
Без этой субмарины я получаю сообщения об ошибках.
Я понимаю, что это происходит потому, что я даю потоку внешние команды, а именно: Label1.Text = Number1 или что-то в этом роде.
Я знаю, что теперь мне следует использовать invoke и delegate, но я не знаю, где именно в этом коде, потому что я не очень хорошо понимаю invoke и delegate..
Может быть, кто-то может помочь мне дальше?
Спасибо,
Эрик
Public Class Form1 Dim Number1 As Integer Dim Number2 As Integer Dim Thread1 As System.Threading.Thread Dim Thread2 As System.Threading.Thread Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.CheckForIllegalCrossThreadCalls = False End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Thread1 = New System.Threading.Thread(AddressOf Telop) Thread1.Start() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Thread2 = New System.Threading.Thread(AddressOf Telaf) Thread2.Start() End Sub Private Sub Telop() Do Until Number1 = 10000 Number1 = Number1 + 1 Label1.Text = Number1 'Me.Refresh() Loop End Sub 'Telop Private Sub Telaf() Number2 = 10000 Do Until Number2 = 0 Number2 = Number2 - 1 Label2.Text = Number2 'Me.Refresh() Loop End Sub 'Telaf End Class
Что я уже пробовал:
vb2017: что и зачем вызывать и делегировать?