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

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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