VB.NET中的Me.Invoke实际上并不“调用” – 线程在Invoke语句中
发布时间:2020-12-17 07:19:44 所属栏目:百科 来源:网络整理
导读:我有以下代码: 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),St
我有以下代码:
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方法在消息队列中放入一条消息,以在主线程中执行方法调用.这意味着您需要一个带消息泵的主线程.如果主线程忙,或者如果您在没有消息泵的应用程序(例如控制台应用程序)中执行此操作,则该消息将保留在队列中.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |