VB.NET多線程實用方法解析
VB.NET編程語言的推出,幫助開發(fā)人員極大的提高了開發(fā)效率。在這里我們會為大家介紹一下VB.NET多線程的使用方法,從而了解這門語言給我們帶來的方便性,及特殊的編程方式,方便大家理解。#t#
很長時間以來,開發(fā)人員一直要求微軟為VB增加更多的線程功能——這一點在VB.NET中終于實現(xiàn)了。VB6不支持創(chuàng)建多線程的EXE、DLL以及OCX。但這種措詞容易引起誤解,這是因為VB6支持執(zhí)行多個單線程的單元。一個單元實際上是代碼執(zhí)行的場所而且單元的邊界限制了外部代碼對單元內(nèi)部的訪問。
VB.NET支持創(chuàng)建自由線程的應(yīng)用程序。這意味著多個線程可以訪問同一個共享的數(shù)據(jù)集。本文將帶領(lǐng)你了解多線程的基本內(nèi)容。
雖然VB支持多個單線程的單元,但并不支持允許多個線程在同一個數(shù)據(jù)集上運(yùn)行的自由線程模型。在很多情況下,產(chǎn)生一個運(yùn)行后臺處理程序的新線程會提高應(yīng)用程序的可用性。一種很顯然的情況就是當(dāng)執(zhí)行一個可能使窗體看起來停止響應(yīng)的長過程時,你一定會想在窗體上放置一個取消按鈕。
解決方法
由于VB.NET使用公共語言運(yùn)行時(Common Language Runtime),它增強(qiáng)了很多新的特性,其中之一便是創(chuàng)建自由線程應(yīng)用程序的能力。
在VB.NET中,開始使利用VB.NET多線程進(jìn)行工作是很容易的。稍后我們會探究一些精妙之處,我們先創(chuàng)建一個簡單的窗體,它生成一個執(zhí)行后臺處理程序的新線程。我們需要做的***件事是將要在新線程上運(yùn)行的后臺處理程序。下面的代碼執(zhí)行一個相當(dāng)長的運(yùn)行過程——一個無限循環(huán):
- Private Sub Background
Process()- Dim i As Integer = 1
- Do While True
- ListBox1.Items.Add
("Iterations: " + i)- i += 1
- Loop
- End Sub
這段代碼無限地循環(huán)并在每次循環(huán)中向窗體上的列表框中增加一個條目。如果你對VB.NET不熟悉的話,便會發(fā)現(xiàn)這段代碼中有一些在VB6中無法完成的事:
在聲明變量時對其賦值 Dim i As Integer=1
使用+=操作符 i+=1代替了i=i+1
Call關(guān)鍵字已經(jīng)被去除了
一旦我們有了一個工作過程,便需要將這段代碼指派給一個新的VB.NET多線程并開始它的執(zhí)行。完成這項工作,我們需要使用Thread對象,它是.NET框架類中System.Threading命名空間的一部分。當(dāng)實例化了一個新的Thread類時,我們向其傳遞一個引用,這個引用指向我們想要在Thread類的構(gòu)造函數(shù)中執(zhí)行的代碼塊。下面的代碼創(chuàng)建一個新的Thread對象并將指向BackgroundProcess的引用傳遞給它:
- Dim t As Thread
- t = New Thread
(AddressOf Me.
BackgroundProcess)- t.Start()
AddressOf操作符為BackgroundProcess方法創(chuàng)建了一個委派對象。委派在VB.NET中是一種類型安全的、面向?qū)ο蟮暮瘮?shù)指針。在VB.NET多線程被實例化之后,你可以通過調(diào)用線程的Start()方法開始執(zhí)行代碼。