vb net многопоточность



Автор Ewrtwert dfggf задал вопрос в разделе Другие языки и технологии

Vb. net и многопоточность UI и получил лучший ответ

Ответ от Grivital[активный]
В Вашем примере НЕ создается поток. BeginInvoke предназначен для вызова методов кантрола из потока, в котором кантрол не был создан. Сам по себе поток он не создает. Поэтому будет работать так:
Imports System.Threading
Public Class Threadform
Private StopFlag As Boolean
Delegate Sub InvokeDelegate(ByVal Message As String)
Public Sub Print(ByVal Message As String)
With tBox
.SelectionStart = .Text.Length
.SelectedText = vbCrLf & Message
End With
End Sub
Sub DoTheWork()
Dim myArray(0) As Object
Do
' ваше сообщение как аргумент BeginInvoke
myArray(0) = "message... "
tBox.BeginInvoke(New InvokeDelegate(AddressOf Print), myArray)
Thread.Sleep(1)' милисекунда на обработку очереди сообщений окна,
' если это убрать - интерфейс повиснет
Loop Until StopFlag
End Sub
Private Sub bStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bStop.Click
StopFlag = True
bStart.Enabled = True
End Sub
Private Sub bStart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bStart.Click
StopFlag = False
bStart.Enabled = False
' создаем поток
Dim t As New Thread(AddressOf DoTheWork)
' запускаем поток
t.Start()
End Sub
End Class

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Vb. net и многопоточность UI
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*