溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在VB.NET中如何使用多線程詳細(xì)知識

發(fā)布時間:2020-06-27 07:09:13 來源:網(wǎng)絡(luò) 閱讀:935 作者:jgsa 欄目:編程語言

VB.NET編程語言的推出,幫助開發(fā)人員極大的提高了開發(fā)效率。在這里我們會為大家介紹一下VB.NET多線程的使用方法,從而了解這門語言給我們帶來的方便性,及特殊的編程方式,方便大家理解。
   
    很長時間以來,開發(fā)人員一直要求微軟為VB增加更多的線程功能--這一點(diǎn)在VB.NET中終于實(shí)現(xiàn)了。VB6不支持創(chuàng)建多線程的EXE、DLL以及OCX.但這種措詞容易引起誤解,這是因?yàn)閂B6支持執(zhí)行多個單線程的單元。一個單元實(shí)際上是代碼執(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 BackgroundProcess()
   
    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í)行。完成這項(xiàng)工作,我們需要使用Thread對象,它是。NET框架類中System.Threading命名空間的一部分。當(dāng)實(shí)例化了一個新的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多線程被實(shí)例化之后,你可以通過調(diào)用線程的Start()方法開始執(zhí)行代碼

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI