成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單概括VB.NET多線程編程技術

開發 后端
文章主要介紹了VB.NET編程技術,對VB.NET多線程編程的多線程處理的優點,建立新線程,線程參數和返回值,線程池的詳細講解,希望對大家有幫助。

經過長時間學習VB.NET多線程編程,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。傳統的VB.NET多線程編程開發人員已經建立了同步應用程序,在這些程序中事務按順序執行。盡管由于多個事務多多少少地同時運行使多線程應用程序效率更高,但是使用先前版本的VisualBasic很難建立這類程序。

多線程程序是可行的,因為操作系統是多任務的,它有模擬同一時刻運行多個應用程序的能力。盡管多數個人計算機只有一個處理器,但是現在的操作系統還是通過在多個執行代碼片斷之間劃分處理器時間提供了多任務。線程可能是整個應用程序,但通常是應用程序可以單獨運行的一個部分。操作系統根據線程的優先級和離最近運行的時間長短給每一個線程分配處理時間。多線程對于時間密集型事務(例如文件輸入輸出)應用程序的性能有很大的提高。

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

本文討論多線程的好處以及怎樣使用VisualBasic .NET開發多線程應用程序。盡管VisualBasic .NET和.NET框架組件使開發多線程應用程序更容易,但是本文作了調整使其適合高級讀者和希望從早期VisualBasic轉移到VB.NET多線程編程的開發人員。

1多線程處理的優點

盡管同步應用程序易于開發,但是它們的性能通常比多線程應用程序低,因為一個新的事務必須等待前面的事務完成后才能開始。如果完成某個同步事務的時間比預想的要長,應用程序可能沒有響應。多線程處理可以同時運行多個過程。例如,字處理程序能夠在繼續操作文檔的同時執行拼寫檢查事務。因為多線程應用程序把程序分解為獨立的事務,它們能通過下面的途徑充分提高性能:
◆多線程技術可以使程序更容易響應,因為在其它工作繼續時用戶界面可以保持激活。
◆當前不忙的事務可以把處理器時間讓給其它事務。
◆花費大量處理時間的事務可以周期性的把時間讓給其它的事務。
◆事務可以在任何時候停止。
◆可以通過把單獨事務的優先級調高或調低來優化性能。明確地建立多線程應用程序的決定依賴于幾個因素。多線程最適合下面的情況:
◆時間密集或處理密集的事務妨礙用戶界面。
◆單獨的事務必須等待外部資源,例如遠程文件或Internet連接。

例如,某個應用程序跟隨Web頁面上的鏈接并下載符合特定條件的文件。這種應用程序可以同步一個接一個地下載文件或者使用多線程在同一時刻下載多個文件。多線程的方法比同步方法的效率高得多,因為即使某些線程從遠程Web服務器上接收到的響應很慢,文件也可以被下載。


2建立新線程

建立線程的最直接的方法是建立線程類的一個新的實例并且使用AddressOf語句替你希望運行的過程傳遞一個委托。例如下面的代碼運行一個作為單獨的線程的叫做SomeTask的子過程。

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

這就是建立和啟動線程的全部工作。調用線程的Start方法后面的任何代碼立即執行,不需要等待前面線程的結束。下表是你能使用的控制單獨線程的方法:

控制單獨線程

上面的大多數方法字面上容易理解,但是安全點(safe point)的概念對你來說可能是新的。安全點是代碼中的某個位置,在這個位置通用語言運行時可以安全地執行自動無用單元收集(garbage collection,釋放無用變量并恢復內存的過程)。當調用線程的Abort或Suspend方法時,通用語言運行時分析代碼,決定線程停止運行的適當位置。

下表是線程的一些常用的屬性:

線程

當建立和管理線程時它的屬性和方法很重要。本文的"線程同步"部分將討論你怎樣使用這些屬性和方法控制和調整線程。

3線程參數和返回值

前面例子中的線程調用沒有參數和返回值。這是使用這種方法建立和運行線程的主要缺點之一。但是,你可以在類或結構體中包裝線程,為運行在單獨線程上的過程提供和返回參

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

手工建立和管理線程最適合于希望很好地控制細節(例如線程的優先級和線程模型)的應用程序。你可能想象,通過這種方法管理大量的線程是很困難的。在你需要很多線程時考慮使用線程池來減小復雜程度。

【編輯推薦】

  1. 用實例講述VB.NET Process類
  2. 簡單講述VB.NET表間拖放
  3. 如何掌握強大的VB.NET ReadLine()方法
  4. 兩步就可以掌握VB使用ArrayList類
  5. 全方位分析VB.NET編碼規范
責任編輯:田樹 來源: 博客
相關推薦

2009-10-28 10:51:32

VB.NET默認屬性

2009-10-14 13:15:09

VB.NET數據綁定

2009-10-14 15:34:29

VB.NET窗體編程模

2009-11-02 09:21:04

VB.NET文件系統

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創建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類對象

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運行環境

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線程同步

2009-10-12 13:11:48

VB.NET使用線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久亚洲av毛片大全 | 国产一二区在线 | 九色国产 | 欧美性另类 | 国产免费一区二区 | 午夜伦理影院 | 热99视频| 成人免费视频网址 | 国产精品成人一区二区三区夜夜夜 | 最新免费av网站 | 日本久久网 | 色综合天天天天做夜夜夜夜做 | 久久精品av麻豆的观看方式 | 99re国产视频 | 日韩在线看片 | 国产午夜在线观看 | 中文字幕视频在线看 | 亚洲a在线观看 | 免费黄篇| 在线观看免费黄色片 | 欧美一级毛片免费观看 | 国产99久久精品一区二区300 | 亚洲国产成人精品女人 | 久草视频2 | www.日韩 | 国产专区在线 | 天堂久久网 | 高清欧美性猛交xxxx黑人猛交 | 欧洲性生活视频 | 日韩精品1区2区3区 成人黄页在线观看 | 激情五月婷婷在线 | 中文字幕11页 | 日日操夜夜操天天操 | 亚洲美女网站 | 91高清在线| 精品乱码一区二区三四区 | 久久国产精品视频 | 91精品国产91久久久久久三级 | 欧美日韩成人在线 | 午夜三级在线观看 | 欧美精品一区二区三区在线播放 |