多線程就是這樣的。界面線程是主線程,你這個Form_Load就是運行在主線程上的線程,而Thread1,Thread2是由主線程啟動的。這個啟動不是線性的。
創新互聯專注于建昌企業網站建設,響應式網站,商城網站開發。建昌網站建設公司,為建昌等地區提供建站服務。全流程定制網站設計,專業設計,全程項目跟蹤,創新互聯專業和態度為您提供的服務
主線程只是通知系統,請啟動一個線程運行某某函數。
而哪個線程先運行完全在系統決定。甚至可能主線程執行到Thread1.Abort() ,Thread2.Abort()的時候這兩個線程都還沒有啟動起來,所以你會遇到兩個變量都是空值這種情況。
雖然你的想法是在 LoginBtn_Click 事件中將復雜的操作分離出去以減輕UI的負擔, 這很好完全沒有問題.
但是問題在于 Me.Invoke(dh)這里,若是ChkLogin里面仍然是大規模的操作呢 你的代碼就又變成將很復雜的操作扔給了UI, 當然會出現窗體無法拖動的情況了.
解決辦法很簡單, 很多種. 將ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke僅僅只是做簡單的輕量的刷新之類的操作就好了.
希望能幫上你的忙.
很簡單,調用API函數CreateThread
但是用vb做多線程的關鍵不在于創建,而是在于線程的不穩定,其不穩定是由于vb6自身的控件(如按鈕、文本框等)不是線程安全的,怎么用你程序就可能怎么掛,所以這些個玩樣兒在多線程中統統不能用。
那么UI的實現也得用API實現。這樣vb的多線程才相對要穩定。但是vb的可視化開發的優勢又蕩然無存。
Sub Main()
Dim thr As Thread
For Pi As Integer=0 To 4 //啟用5線程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //啟動多線程進程
Application.DoEvents
Next
End Sub
新聞標題:vb.net啟動線程 c語言啟動線程
轉載來于:http://m.kartarina.com/article16/hgpcdg.html
成都網站建設公司_創新互聯,為您提供軟件開發、網站改版、全網營銷推廣、網頁設計公司、微信公眾號、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯