所属分类:.NET技术 VB.NET
-----------------------------------------
我现有个多线程,在其中有一判断,如果某个值出错,就弹出一信息.要求此信息置顶,且要求弹出此信息的同时,并不中断进程的执行.也就是说不像MESSAGEBOX.SHOW一样.它会中断进程的进行!
高手帮个忙!
----------------------------------------------------------------------
MessageBox.Show相当于执行了ShowDialog,你自已用一个Form来做一个窗口,用Show显示就可以了.
--------------------------------------------------------
忘了补充一句,我现在用的就是做一个FORM再SHOW.可放在线程中不行.
第一,会出现死机现象.也许是因为太频繁地SHOW吧!
第二,线程被NOTHING掉,其自动消失
--------------------------------------------------------
程序中的一段:
while(blnrun)
.....
If 条件为真 Then
enfrmdialog.DefInstance.lbltext.Text = str_message
enfrmdialog.DefInstance.Show()
End If
end while
......
runthread=nothing
--------------------------------------------------------
朋友们快提个建议呀!急着用呢
--------------------------------------------------------
在线程中的建立的窗体和你的主窗体线程成了两家,会有冲突,用ShowDialog显示的没有问题是因为此时阻止了运行才不有报错.
你可以在线程中通过主窗体的Invoke来调用一个方法,在这个主窗体的方法里Show(Owner)出来个窗体就可以了.
这样的问题在CSDN有不少,都是关于线程和窗体控件的,你找一下吧.
--------------------------------------------------------
示意代码:
Public Class MyMessageForm
Inherits Form
Private New()
Me.TopMost = True
End Sub
Private Shared Current As MyMessageForm
Public Shared Sub Close()
If Current IsNot Nothing Then Current.Close
End Sub
Public Shared Sub Show(msg As String)
If Current Is Nothing OrElse Current.IsDisposed Then
Current = New MyMessageForm
End If
Current.ShowMessage(msg)
End Sub
Private Sub ShowMessage(msg As String)
’参考跨线程显示信息
’If Me.InvokeRequired
End Sub
End Class
--------------------------------------------------------
兄弟伙,我帮你顶一哈
--------------------------------------------------------
兄弟我笨,还没学会使用Invoke的用法.
由于时间急,我先暂时试出了一个好方法.过了这一期一定花时间学学Invoke的用法.
我的方法是在程序的第一个窗体加载的同时也定义一个全局窗体变量,并且让其Show出来,But隐藏起来.需要的时候再显示出来.
哈...既然达到我的要求了.可我知道这不是一个程序员所采用的策略.我一定会加油的.谢谢各位!有关Invoke的问题我还会再请问你们哦!