這個(gè)沒法做到。原因
站在用戶的角度思考問題,與客戶深入溝通,找到寶山網(wǎng)站設(shè)計(jì)與寶山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋寶山地區(qū)。
1)當(dāng)你將方法排入線程池隊(duì)列后,此方法在有線程池線程變得可用時(shí)執(zhí)行。
2)線程池中某個(gè)線程的可用與不可用,是由.net 后臺(tái)決定,用戶程序無法控制的
3)正如你觀察到的:線程啟動(dòng)的時(shí)間不同,有快有慢,這恰恰說明線程池起作用了:線程池的調(diào)度試圖讓程序響應(yīng)達(dá)到最佳。
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() //啟動(dòng)多線程進(jìn)程
Application.DoEvents
Next
End Sub
這個(gè)沒法做到。原因
1)當(dāng)你將方法排入線程池隊(duì)列后,此方法在有線程池線程變得可用時(shí)執(zhí)行。
2)線程池中某個(gè)線程的可用與不可用,是由.net 后臺(tái)決定,用戶程序無法控制的
3)正如你觀察到的:線程啟動(dòng)的時(shí)間不同,有快有慢,這恰恰說明線程池起作用了:線程池的調(diào)度試圖讓程序響應(yīng)達(dá)到最佳。
請(qǐng)參考csdn中的vbcon98.chm:
★ 單線程的部件與單元模型
Visual Basic 創(chuàng)建的所有部件都使用單元模型,無論該部件是單線程的還是多線程的。單線程的部件只有一個(gè)單元,該單元包含部件提供的所有對(duì)象。
這就意味著用 Visual Basic 創(chuàng)建的單線程的 DLL 可以安全地用于多線程的客戶端。不過,性能與安全是一對(duì)矛盾,這種安全性損失了性能。除了當(dāng)前的客戶端線程之外,其它所有的客戶端線程的調(diào)用都要等待被調(diào)度,就好象這些調(diào)用是進(jìn)程外調(diào)用。請(qǐng)參閱“設(shè)計(jì)線程安全的 DLL”。
線程的所有權(quán)
多線程的進(jìn)程內(nèi)部件沒有自己的線程。如“設(shè)計(jì)線程安全的 DLL”中所述,定義每個(gè)單元的線程都屬于客戶端。
與此相對(duì)的是,多線程的進(jìn)程外部件可能有一個(gè)固定線程數(shù)目的線程池,或者為每個(gè)外部創(chuàng)建的對(duì)象設(shè)置一個(gè)線程。
★ 設(shè)計(jì)多線程的進(jìn)程外部件
您可以利用單元模式進(jìn)程化,建立多線程的進(jìn)程外部部件。這種部件提供的對(duì)象可以運(yùn)行在不同的執(zhí)行線程上。
為了將對(duì)象指派到進(jìn)程外部件中的線程,Visual Basic 提供了三種模型??梢栽凇肮こ虒傩浴睂?duì)話框中設(shè)置“通用”選項(xiàng)卡的“無用戶界面執(zhí)行”框,選擇其中的一種模型。
線程指派模型 “無用戶界面執(zhí)行”的設(shè)置
單一的執(zhí)行線程 選擇“線程池”選項(xiàng),指定線程數(shù)為一。
循環(huán)指派線程的線程池 選擇“線程池”選項(xiàng),并指定可用的線程數(shù)目。
每個(gè)在外部創(chuàng)建的對(duì)象有一個(gè)屬于自己的線程 選擇“每個(gè)對(duì)象的線程”選項(xiàng)。
單一的執(zhí)行線程
當(dāng)選擇“無用戶界面執(zhí)行”時(shí),單一的執(zhí)行線程是缺省設(shè)置。使用該選項(xiàng)可以編譯 Visual Basic 早期版本開發(fā)的部件,無需考慮線程。
如果使用“無用戶界面執(zhí)行”選項(xiàng)來重新編譯部件,該服務(wù)器將不能再顯示出消息框,也就無法獲得管理員的干預(yù)。不過,這種消息可以被記錄到 Windows NT 的事件日志(或另外選擇的日志文件),請(qǐng)參閱“多線程部件的事件日志”。
循環(huán)的線程池
當(dāng)客戶端請(qǐng)求對(duì)象時(shí),Visual Basic 使用在線程池的下一個(gè)線程上創(chuàng)建所需的對(duì)象。當(dāng)線程到達(dá)線程池的尾端時(shí),就從頭開始。
Sub Main() Dim thr As New Thread(AddressOf 循環(huán)) thr.Start("a") End Sub Sub 循環(huán)(a() As String) '這里隨你干什么循環(huán)也行 For Each i As String In a MsgBox(i) Next End Sub
invoke?不是創(chuàng)建線程,功能類似于?call?,還有設(shè)置?Control.CheckForIllegalCrossThreadCalls?=?false?是能讓線程不安全訪問控件(兩個(gè)線程同時(shí)訪問同一控件時(shí)可能會(huì)造成死鎖)而不引發(fā)錯(cuò)誤.創(chuàng)建線程可以用?threading.thread?類?,?BackgroundWorker?控件?,?線程池?,?委托?.