Задать значение переменной из другого потока - 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

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


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

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

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