vb.net多線程下載,vb多線程編程

高分請教在vb中實現(xiàn)多線程?

純VB中只能模擬多線程,不能真正多線程(即使用多個ActiveX,在每個里面運(yùn)行一個線程,以此模擬多線程環(huán)境)。 如果要多線程,多是使用C++等支持多線程的語言編寫好組件,給VB調(diào)用。 不過現(xiàn)在最佳方式是放開VB,改用VB.Net直接100%的多線程支持。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供金門網(wǎng)站建設(shè)、金門做網(wǎng)站、金門網(wǎng)站設(shè)計、金門網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、金門企業(yè)網(wǎng)站模板建站服務(wù),十余年金門做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

在vb.net中,多線程如何使用

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

紅糖暖胃____關(guān)于控制VB.NET的多線程thead拋出的線程數(shù)量的問題.__冰天雪地裸體騰空360°跪玻璃渣問

我告訴你思路,你自己去實現(xiàn)。

建議你用“守護(hù)線程”的方式去做,這樣做對于你一個小任務(wù)來說更合適。首先,你要建立一個隊列,將所有下載任務(wù)放入隊列。注意,這個隊列必須是“線程安全”的,即兩個線程不會搶到同一個任務(wù)。然后只開10個線程。這些線程會從隊列中讀取任務(wù)。當(dāng)一個線程不能再從隊列中讀取任務(wù)時,也就是隊列為空時,退出。等所有線程都退出后,你的程序就結(jié)束了。

還有一種方法,叫“線程池”,也就是你說的方法,稍微復(fù)雜一點:

指定一個變量,用來表示線程的數(shù)量。剛開始為0,每開一個線程+1。當(dāng)一個線程完成任務(wù)退出后,這個變量-1。直到所有任務(wù)都完成后,不再產(chǎn)生新線程。

VB.NET 多線程下載遇到問題

t1 = New Threading.Thread(AddressOf sDownFile) 你這句都沒代入?yún)?shù)啊。

改成這樣試試 t1 = New Threading.Thread(AddressOf sDownFile(參數(shù)1,參數(shù)2))

VB.NET 簡單多線程

多線程一般是不推薦用的,因為線程之間如果有共享資源的話會引起競爭,需要加鎖處理;而且線程間沒有時序關(guān)系,所以你在調(diào)試中可能會出現(xiàn)異步處理結(jié)束順序與開始處理順序不一致的情況(我在調(diào)試中已經(jīng)發(fā)現(xiàn)該問題)。

針對你提出的這個問題,采用了多線程處理,利用的是BackgroundWorker也就是異步處理控件進(jìn)行了處理。

代碼已經(jīng)經(jīng)過調(diào)試通過。歡迎交流,如有問題,留下QQ或其他聯(lián)系方式。

代碼如下,并附程序截圖。

‘---------------------------------------------------

Imports?System.ComponentModel?'導(dǎo)入異步控件命名空間

Public?Class?Form1

Private?howmany?As?Integer?=?10

Private?AnalysisNumber(0?To?howmany?-?1)?As?BackgroundWorker

Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click

ListBox1.Items.Clear()

creatNewBackgroundWorker()

addHandle()

startWork()

End?Sub

Private?Sub?creatNewBackgroundWorker()

For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1

AnalysisNumber(i)?=?New?BackgroundWorker

Next

End?Sub

Private?Sub?addHandle()

For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1

AddHandler?AnalysisNumber(i).DoWork,?AddressOf?AnalysisNumber_DoWork

AddHandler?AnalysisNumber(i).RunWorkerCompleted,?AddressOf?AnalysisNumber_RunWorkerCompleted

Next

End?Sub

Private?Sub?startWork()

For?i?As?Integer?=?0?To?9

Dim?temp(0?To?9)?As?Integer

For?j?As?Integer?=?1?To?10

temp(j?-?1)?=?10?*?i?+?j

Next

AnalysisNumber(i).RunWorkerAsync(temp)

Next

End?Sub

Private?Sub?AnalysisNumber_DoWork(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.DoWorkEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Argument,?Integer())

Dim?temp?As?Integer

For?i?As?Integer?=?0?To?data.Length?-?1

temp?=?data(i)

data(i)?=?temp?*?temp

Next

e.Result?=?data

End?Sub

Private?Sub?AnalysisNumber_RunWorkerCompleted(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.RunWorkerCompletedEventArgs)

Dim?data?As?Integer()

data?=?CType(e.Result,?Integer())

For?i?As?Integer?=?0?To?data.Length?-?1

ListBox1.Items.Add(data(i))

Next

End?Sub

End?Class

文章標(biāo)題:vb.net多線程下載,vb多線程編程
文章網(wǎng)址:http://muchs.cn/article32/hciipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google企業(yè)建站、網(wǎng)站維護(hù)、網(wǎng)站收錄、軟件開發(fā)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司