偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

簡(jiǎn)單概括VB.NET多線(xiàn)程編程技術(shù)

開(kāi)發(fā) 后端
文章主要介紹了VB.NET編程技術(shù),對(duì)VB.NET多線(xiàn)程編程的多線(xiàn)程處理的優(yōu)點(diǎn),建立新線(xiàn)程,線(xiàn)程參數(shù)和返回值,線(xiàn)程池的詳細(xì)講解,希望對(duì)大家有幫助。

經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)VB.NET多線(xiàn)程編程,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。傳統(tǒng)的VB.NET多線(xiàn)程編程開(kāi)發(fā)人員已經(jīng)建立了同步應(yīng)用程序,在這些程序中事務(wù)按順序執(zhí)行。盡管由于多個(gè)事務(wù)多多少少地同時(shí)運(yùn)行使多線(xiàn)程應(yīng)用程序效率更高,但是使用先前版本的VisualBasic很難建立這類(lèi)程序。

多線(xiàn)程程序是可行的,因?yàn)椴僮飨到y(tǒng)是多任務(wù)的,它有模擬同一時(shí)刻運(yùn)行多個(gè)應(yīng)用程序的能力。盡管多數(shù)個(gè)人計(jì)算機(jī)只有一個(gè)處理器,但是現(xiàn)在的操作系統(tǒng)還是通過(guò)在多個(gè)執(zhí)行代碼片斷之間劃分處理器時(shí)間提供了多任務(wù)。線(xiàn)程可能是整個(gè)應(yīng)用程序,但通常是應(yīng)用程序可以單獨(dú)運(yùn)行的一個(gè)部分。操作系統(tǒng)根據(jù)線(xiàn)程的優(yōu)先級(jí)和離最近運(yùn)行的時(shí)間長(zhǎng)短給每一個(gè)線(xiàn)程分配處理時(shí)間。多線(xiàn)程對(duì)于時(shí)間密集型事務(wù)(例如文件輸入輸出)應(yīng)用程序的性能有很大的提高。

但是也有必須細(xì)心的地方。盡管多線(xiàn)程能提高性能,但是每個(gè)線(xiàn)程還是需要用附加的內(nèi)存來(lái)建立和處理器時(shí)間來(lái)運(yùn)行,建立太多的線(xiàn)程可能降低應(yīng)用程序的性能。當(dāng)設(shè)計(jì)多線(xiàn)程應(yīng)用程序時(shí),應(yīng)該比較性能與開(kāi)銷(xiāo)。多任務(wù)成為操作系統(tǒng)的一部分已經(jīng)很久了。但是直到最近VisualBasic程序員才能使用無(wú)文檔記錄特性(undocumented)或者間接使用COM組件或者操作系統(tǒng)的異步部分執(zhí)行多線(xiàn)程事務(wù)。.NET框架組件為開(kāi)發(fā)多線(xiàn)程應(yīng)用程序,在System.Threading名字空間中提供了全面的支持。

本文討論多線(xiàn)程的好處以及怎樣使用VisualBasic .NET開(kāi)發(fā)多線(xiàn)程應(yīng)用程序。盡管VisualBasic .NET和.NET框架組件使開(kāi)發(fā)多線(xiàn)程應(yīng)用程序更容易,但是本文作了調(diào)整使其適合高級(jí)讀者和希望從早期VisualBasic轉(zhuǎn)移到VB.NET多線(xiàn)程編程的開(kāi)發(fā)人員。

1多線(xiàn)程處理的優(yōu)點(diǎn)

盡管同步應(yīng)用程序易于開(kāi)發(fā),但是它們的性能通常比多線(xiàn)程應(yīng)用程序低,因?yàn)橐粋€(gè)新的事務(wù)必須等待前面的事務(wù)完成后才能開(kāi)始。如果完成某個(gè)同步事務(wù)的時(shí)間比預(yù)想的要長(zhǎng),應(yīng)用程序可能沒(méi)有響應(yīng)。多線(xiàn)程處理可以同時(shí)運(yùn)行多個(gè)過(guò)程。例如,字處理程序能夠在繼續(xù)操作文檔的同時(shí)執(zhí)行拼寫(xiě)檢查事務(wù)。因?yàn)槎嗑€(xiàn)程應(yīng)用程序把程序分解為獨(dú)立的事務(wù),它們能通過(guò)下面的途徑充分提高性能:
◆多線(xiàn)程技術(shù)可以使程序更容易響應(yīng),因?yàn)樵谄渌ぷ骼^續(xù)時(shí)用戶(hù)界面可以保持激活。
◆當(dāng)前不忙的事務(wù)可以把處理器時(shí)間讓給其它事務(wù)。
◆花費(fèi)大量處理時(shí)間的事務(wù)可以周期性的把時(shí)間讓給其它的事務(wù)。
◆事務(wù)可以在任何時(shí)候停止。
◆可以通過(guò)把單獨(dú)事務(wù)的優(yōu)先級(jí)調(diào)高或調(diào)低來(lái)優(yōu)化性能。明確地建立多線(xiàn)程應(yīng)用程序的決定依賴(lài)于幾個(gè)因素。多線(xiàn)程最適合下面的情況:
◆時(shí)間密集或處理密集的事務(wù)妨礙用戶(hù)界面。
◆單獨(dú)的事務(wù)必須等待外部資源,例如遠(yuǎn)程文件或Internet連接。

例如,某個(gè)應(yīng)用程序跟隨Web頁(yè)面上的鏈接并下載符合特定條件的文件。這種應(yīng)用程序可以同步一個(gè)接一個(gè)地下載文件或者使用多線(xiàn)程在同一時(shí)刻下載多個(gè)文件。多線(xiàn)程的方法比同步方法的效率高得多,因?yàn)榧词鼓承┚€(xiàn)程從遠(yuǎn)程Web服務(wù)器上接收到的響應(yīng)很慢,文件也可以被下載。


2建立新線(xiàn)程

建立線(xiàn)程的最直接的方法是建立線(xiàn)程類(lèi)的一個(gè)新的實(shí)例并且使用AddressOf語(yǔ)句替你希望運(yùn)行的過(guò)程傳遞一個(gè)委托。例如下面的代碼運(yùn)行一個(gè)作為單獨(dú)的線(xiàn)程的叫做SomeTask的子過(guò)程。

  1. Dim Thread1 As New System.Threading.Thread(AddressOf SomeTask)  
  2. Thread1.Start  ' 這兒的代碼立即運(yùn)行   

這就是建立和啟動(dòng)線(xiàn)程的全部工作。調(diào)用線(xiàn)程的Start方法后面的任何代碼立即執(zhí)行,不需要等待前面線(xiàn)程的結(jié)束。下表是你能使用的控制單獨(dú)線(xiàn)程的方法:

控制單獨(dú)線(xiàn)程

上面的大多數(shù)方法字面上容易理解,但是安全點(diǎn)(safe point)的概念對(duì)你來(lái)說(shuō)可能是新的。安全點(diǎn)是代碼中的某個(gè)位置,在這個(gè)位置通用語(yǔ)言運(yùn)行時(shí)可以安全地執(zhí)行自動(dòng)無(wú)用單元收集(garbage collection,釋放無(wú)用變量并恢復(fù)內(nèi)存的過(guò)程)。當(dāng)調(diào)用線(xiàn)程的Abort或Suspend方法時(shí),通用語(yǔ)言運(yùn)行時(shí)分析代碼,決定線(xiàn)程停止運(yùn)行的適當(dāng)位置。

下表是線(xiàn)程的一些常用的屬性:

線(xiàn)程

當(dāng)建立和管理線(xiàn)程時(shí)它的屬性和方法很重要。本文的"線(xiàn)程同步"部分將討論你怎樣使用這些屬性和方法控制和調(diào)整線(xiàn)程。

3線(xiàn)程參數(shù)和返回值

前面例子中的線(xiàn)程調(diào)用沒(méi)有參數(shù)和返回值。這是使用這種方法建立和運(yùn)行線(xiàn)程的主要缺點(diǎn)之一。但是,你可以在類(lèi)或結(jié)構(gòu)體中包裝線(xiàn)程,為運(yùn)行在單獨(dú)線(xiàn)程上的過(guò)程提供和返回參

  1. FriendStrArgAsString  
  2. FriendRetValAsBoolean  
  3. SubSomeTask()'StrArg字段是一個(gè)參數(shù)  
  4. MsgBox("TheStrArgcontainsthestring"&StrArg)  
  5. RetVal=True'設(shè)置返回參數(shù)中的返回值  
  6. EndSub  
  7. EndClass'為了使用這個(gè)類(lèi),設(shè)置存儲(chǔ)參數(shù)的屬性或者字段,接著異步調(diào)用需要的方法  
  8. SubDoWork()  
  9. DimTasksAsNewTasksClass()  
  10. DimThread1AsNewSystem.Threading.Thread(AddressOfTasks.SomeTask)  
  11. Tasks.StrArg="SomeArg"'設(shè)置作為參數(shù)使用的字段  
  12. Thread1.Start()'啟動(dòng)新線(xiàn)程  
  13. Thread1.Join()'等待線(xiàn)程1結(jié)束'顯示返回值  
  14. MsgBox("Thread1returnedthevalue"&Tasks.RetVal)  
  15. EndSub  
  16. ClassTasksClass 

手工建立和管理線(xiàn)程最適合于希望很好地控制細(xì)節(jié)(例如線(xiàn)程的優(yōu)先級(jí)和線(xiàn)程模型)的應(yīng)用程序。你可能想象,通過(guò)這種方法管理大量的線(xiàn)程是很困難的。在你需要很多線(xiàn)程時(shí)考慮使用線(xiàn)程池來(lái)減小復(fù)雜程度。

【編輯推薦】

  1. 用實(shí)例講述VB.NET Process類(lèi)
  2. 簡(jiǎn)單講述VB.NET表間拖放
  3. 如何掌握強(qiáng)大的VB.NET ReadLine()方法
  4. 兩步就可以掌握VB使用ArrayList類(lèi)
  5. 全方位分析VB.NET編碼規(guī)范
責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-10-28 10:51:32

VB.NET默認(rèn)屬性

2009-10-14 13:15:09

VB.NET數(shù)據(jù)綁定

2009-10-14 15:34:29

VB.NET窗體編程模

2009-11-02 09:21:04

VB.NET文件系統(tǒng)

2009-10-30 10:19:43

VB.NET OBEX

2009-10-20 10:59:32

VB.NET編程

2009-10-15 17:50:48

VB.NET Spli

2009-10-14 10:19:57

VB.NET Doma

2009-10-14 14:04:29

VB.NET創(chuàng)建Web

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-13 14:50:59

VB.NET Envi

2009-11-03 10:51:33

VB.NET共享

2009-10-23 14:06:07

VB.NET類(lèi)對(duì)象

2009-10-14 16:46:25

VB.NET OnSt

2009-10-27 11:32:42

VB.NET Disp

2009-10-21 10:05:30

VB.NET運(yùn)行環(huán)境

2009-10-20 09:42:16

VB.NET編程

2009-11-03 10:00:20

VB.NET New方

2009-10-12 13:19:14

VB.NET線(xiàn)程同步

2009-10-12 13:11:48

VB.NET使用線(xiàn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)