Задать значение переменной из другого потока - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. Imports System.Threading
  2. Public Class Form1
  3. Dim th As New Thread(AddressOf c), a As Integer
  4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5. th.Start()
  6. MsgBox(a)
  7. End Sub
  8. Sub c()
  9. a = 2
  10. End Sub
  11. End Class
msgbox выдает ничего. Как задать значение переменной из другого потока, при этом нельзя использовать invoke, ибо это нужно использовать в моем tcp классе, а там нет tcp.invoke. Или это бред? Не понимаю.

Решение задачи: «Задать значение переменной из другого потока»

textual
Листинг программы
  1. Imports System.Threading
  2. Public Class Form1
  3.     Public Event DataReceived()
  4.  
  5.     Dim th As New Thread(AddressOf c), a As Integer
  6.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  7.         Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString())
  8.         AddHandler Me.DataReceived, AddressOf CallBack
  9.         th.Start()
  10.     End Sub
  11.     Sub c()
  12.         Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString())
  13.         Thread.Sleep(2000) 'задержка для примера
  14.         a = 2
  15.         RaiseEvent DataReceived()
  16.     End Sub
  17.  
  18.     Sub CallBack()
  19.         Debug.Print(Thread.CurrentThread.ManagedThreadId.ToString())
  20.         MsgBox(a)
  21.         'если нужно взаимодействие с элементами формы, то нужно использовать Control.Invoke(). Т.к. Событие вызывается из дочернего потока
  22.     End Sub
  23.  
  24. End Class

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы