У меня есть следующий код:
Public Delegate Sub SetStatusBarTextDelegate(ByVal StatusText As String)
Private Sub SetStatusBarText(ByVal StatusText As String)
If Me.InvokeRequired Then
Me.Invoke(New SetStatusBarTextDelegate(AddressOf SetStatusBarText), StatusText)
Else
Me.labelScanningProgress.Text = StatusText
End If
End Sub
Проблема состоит в том, что, когда я называю "SetStatusBarText" sub от другого потока, InvokeRequired Верен (как это должно быть), но затем мой останов потоков на Мне. Вызовите оператор - приостанавливающееся выполнение показывает им всем просто находящимся там, не на самом деле вызывая что-либо.
Какие-либо мысли о том, почему потоки, кажется, боятся Вызывания?
Метод Invoke помещает сообщение в очередь сообщений для выполнения вызова метода в основном потоке. Это означает, что вам нужен основной поток с насосом сообщений. Если основной поток занят или если вы делаете это в приложении без насоса сообщений (например, консольном приложении), сообщение просто останется в очереди.