不可以,但是能夠在主線程的基礎(chǔ)上調(diào)用委托(Invoke)。(主線程會被占用)
成都創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺運(yùn)營、app軟件開發(fā)、成都做手機(jī)網(wǎng)站、微信網(wǎng)站制作、軟件開發(fā)、西部信息機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
例子:
Dim thr As Threading.Thread
Public Delegate Sub VoidDelegate()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
thr = New Threading.Thread(AddressOf Where)
thr.Start()
End Sub
Public Sub Where()
Me.BeginInvoke(New VoidDelegate(AddressOf WhereThr))
End Sub
Public Sub WhereThr()
Me.TextBox.text="0123456789"
End Sub
(Invoke)這種情況下,主線程被占用,所有由主線程執(zhí)行程序,都將被(wherethr函數(shù)執(zhí)行結(jié)束)后執(zhí)行。
并沒有看出什么地方可能導(dǎo)致程序假死,這排版也太亂了.不妨調(diào)試一下程序,當(dāng)出現(xiàn)你說的"假死"后暫停一下程序,看看線程都卡在哪里.
另外,從設(shè)計(jì)上來看,你這里并不需要多線程操作.
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
委托,Delegate
就是讓你處于這個線程里時,委托另一個線程去執(zhí)行一些動作
我簡單舉一個寫richtextbox的例子:
////////////////////////////////////////////
'創(chuàng)建一個名為 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
/////////////////////
這樣,你在多線程應(yīng)用時,在其他線程里用txtW(str)來寫richtextbox,就不會產(chǎn)生錯誤了。不然,直接垮線程寫richtextbox,可能會出現(xiàn)和UI線程的沖突。