同學。。你這里的寫法其實根本沒有用到多線程
為千陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及千陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、千陽網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
原因很簡單
你是定義了一個T的新線程,但是很可惜你在BeginDoSub這個獨立的線程中又定義了一個梁汪deSomeSub的委托,并且直接用Me.Invoke把橡耐仔實際的執(zhí)行任務(wù)提交給界面主線程運行了
所以你的圖片的處理函數(shù)實際上是在主線程中運行的,新線程等于沒用
正確的作法是,T定義為SomeSub這個函數(shù)為入口的線程,畝豎并啟動它
在界面進度條更改的時候再使用Invoke來調(diào)用委托來進行界面更改。
自己再好好看看吧,時間問題我要走了。
感覺問灶配題出在
Form2.Show() '啟動倒計時顯示窗口
這一句上。
這一句應(yīng)該只需要執(zhí)行一次就行了。
把它放在timer中隱沒指,多次調(diào)用,造成假察斗死。
Me.Invoke(d, i)
問題出在這里!
直接用Me.Invoke把實際的執(zhí)行任務(wù)提交給主線程運行
所以你的處譽旁理函數(shù)實際上是在主線程中運行的,新線程等于沒用
正確的作法是,定義一個函數(shù)為入口的線程,并啟動它
在需要調(diào)用的時候再使用Invoke來調(diào)用委托來進行更改。
----------------------------------------------------------------
方法已經(jīng)給你說明白了,新建1個線程和2個線程來操作有什么不通用的哪??
問題不是線程個數(shù)的問猛散題,是你線程中的函數(shù)一直在調(diào)用settext和settext1兩個函數(shù),而這兩個函數(shù)都是處于method 方枝虛氏法 的while的循環(huán)中,相當于不間歇的在使用 Me.Invoke(d, i)這個方法。
----------------------------------------------------------------
如果你要不停地通過另外一個線程修改richtextbox內(nèi)的內(nèi)容,那也可以新啟動一個線程,由這個線程的入口方法創(chuàng)建一個richtextbox ,再由這個線程來對這個richtextbox 進行操作。當然,你也可以用不安全的線程間的操作方法來實現(xiàn)。
Sub bc()
Dim cs As New qq163(AddressOf js)
Application.DoEvnts
Invoke(cs)
End Sub