gpt4 book ai didi

vb.net - VB.NET 中的 Me.Invoke 实际上并不是 "Invoke"- 线程在 Invoke 语句上停滞

转载 作者:行者123 更新时间:2023-12-04 19:22:42 28 4
gpt4 key购买 nike

我有以下代码:

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”子时,InvokeRequired 是 True(应该是),但是我的线程在 Me.Invoke 语句上停顿 - 暂停执行显示它们都只是坐在那里,实际上并不是调用任何东西。

关于为什么线程似乎害怕 Invoke 的任何想法?

最佳答案

Invoke 方法将消息放入消息队列中,以在主线程中执行方法调用。这意味着您需要一个带有消息泵的主线程。如果主线程很忙,或者如果您在没有消息泵的应用程序(例如控制台应用程序)中执行此操作,则消息将仅保留在队列中。

关于vb.net - VB.NET 中的 Me.Invoke 实际上并不是 "Invoke"- 线程在 Invoke 语句上停滞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com