Автор 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
Преимущества Delphi перед Visual Studio ?
Никаких. Не мучайся, переходи на c#. Одна среда разработки чего стоит. А уж языковых "вкусностей"
подробнее...
программа visual studio 2010 что можно делать в этой программе. (краткий обзор программы для отчета по практике)
Для начала - это не программа. Назвавшего Visual Studio программой можно сразу пускать на второй
подробнее...