委托,Delegate
成都创新互联公司专注于企业营销型网站、网站重做改版、铁岭县网站定制设计、自适应品牌网站建设、H5技术、商城网站开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为铁岭县等各大城市提供网站开发制作服务。
就是让你处于这个线程里时,委托另一个线程去执行一些动作
我简单举一个写richtextbox的例子:
////////////////////////////////////////////
'创建一个名为 MySubDelegate 的委托。
Delegate Sub MySubDelegate(ByVal txt As String)
'写信息到富文本主窗口
Private Sub txtW(ByVal txt As String)
Dim msgd As New MySubDelegate(AddressOf Me.txtW1)
Dim arg(0) As Object
arg(0) = txt
Me.Invoke(msgd, arg)
End Sub
'委托指向
Private Sub txtW1(ByVal txt As String)
Me.RichTextBox1.AppendText(txt)
End Sub
/////////////////////
这样,你在多线程应用时,在其他线程里用txtW(str)来写richtextbox,就不会产生错误了。不然,直接垮线程写richtextbox,可能会出现和UI线程的冲突。
Delegate Sub MySubDelegate(form As Form1)
Class class1
Sub Sub1(form As Form1)
form.Timer1.Enabled = True
form.Label1.Visible = True
MsgBox("kkk")
End Sub
End Class
Private Sub DelegateTest()
Dim c1 As New class1
Dim msd As MySubDelegate = AddressOf c1.Sub1
Me.Invoke(msd,Me)
End Sub
并没有看出什么地方可能导致程序假死,这排版也太乱了.不妨调试一下程序,当出现你说的"假死"后暂停一下程序,看看线程都卡在哪里.
另外,从设计上来看,你这里并不需要多线程操作.