Я. Вызовите в VB.NET, на самом деле “не Вызывает” - останов потоков на оператор Invoke

У меня есть следующий код:

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 Верен (как это должно быть), но затем мой останов потоков на Мне. Вызовите оператор - приостанавливающееся выполнение показывает им всем просто находящимся там, не на самом деле вызывая что-либо.

Какие-либо мысли о том, почему потоки, кажется, боятся Вызывания?

5
задан SqlRyan 16 March 2010 в 21:37
поделиться

1 ответ

Метод Invoke помещает сообщение в очередь сообщений для выполнения вызова метода в основном потоке. Это означает, что вам нужен основной поток с насосом сообщений. Если основной поток занят или если вы делаете это в приложении без насоса сообщений (например, консольном приложении), сообщение просто останется в очереди.

5
ответ дан 14 December 2019 в 19:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: