Задать значение переменной из другого потока - Visual Basic .NET
Формулировка задачи:
msgbox выдает ничего.
Как задать значение переменной из другого потока, при этом нельзя использовать invoke,
ибо это нужно использовать в моем tcp классе, а там нет tcp.invoke. Или это бред? Не понимаю.
Решение задачи: «Задать значение переменной из другого потока»
textual
Листинг программы
Imports System.Threading Public Class Form1 Public Event DataReceived() Dim th As New Thread(AddressOf c), a As Integer Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString()) AddHandler Me.DataReceived, AddressOf CallBack th.Start() End Sub Sub c() Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString()) Thread.Sleep(2000) 'задержка для примера a = 2 RaiseEvent DataReceived() End Sub Sub CallBack() Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString()) MsgBox(a) 'если нужно взаимодействие с элементами формы, то нужно использовать Control.Invoke(). Т.к. Событие вызывается из дочернего потока End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д