重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
ListBox操作需要用Invoke。另外多線程方式并不是并行處理。
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了榮縣免費建站歡迎大家使用!
建議采用.net framework 4 帶的并行處理循環操作,若不是4.0版本的framework,可以使用Aforge的并行庫比較方便。
一般多開線程寫無限循環行為。
//定義線程
Dim?th?As?New?Threading.Thread(New?Threading.ParameterizedThreadStart(AddressOf?test))
th.Start("aaa")//開始線程,可以傳參
//線程執行函數
Public?Sub?test(ob?As?Object)
While?True
Console.WriteLine("線程正在運行中"??ob)
Threading.Thread.Sleep(1000)
End?While
End?Sub
多線程是用于處理復雜項目的
打個比方
你的主程序線程A中有個循環,由于代碼是一行行走的,所以循環結束前下面的代碼無法運行,而此時主界面的反應就類似卡死的樣子,你點擊按鈕也沒有反應,因為主線程在忙著循環呢,所以對按鈕的事件代碼要等待了,如果要避免這種情況,就要用到多線程,另開一個新線程專門用來執行循環代碼,主界面就不會卡死了,只要在循環結束后將結果傳回主線程調用就可以了,再復雜點要涉及到委托,控制了
按你的要求其實你的代碼用不到多線程,只要把sleep放到兩段代碼中間就可以了。
新線程結束用thread.abort()
多線程并不一定就可以縮短時間,具體要看你上面的“過程”是否調用數據庫完成。如果調用了數據庫,可以考慮用存儲過程替代“過程”。另外看看“過程”里是否反復打開和關閉了數據庫連接,如果是,這才是真正的耗時動作。如果沒調用數據庫,可以考慮使用Parallel類(.net4以后)里面的函數,使多個任務在多核CPU上并行運行,縮短時間。
Sub?Main()
Dim?thr?As?New?Thread(AddressOf?循環)
thr.Start("a")
End?Sub
Sub?循環(a()?As?String)
'這里隨你干什么循環也行
For?Each?i?As?String?In?a
MsgBox(i)
Next
End?Sub
看懂了吧 參數只能有一個 也可以不是數組,在a() As String的a后面去掉括號就行