VB.NET多線程技術及其實現
|
摘 要: Visaul Basic 在6.0之前的版本中對多線程并沒有提供一個很好的支持,而微軟的.NET框架提供了新的類庫,從而可以方便地創建多線程應用程序。本文首先概述了進程、線程以及應用程序域的相互關系,隨后介紹了如何使用Visual Basic.NET的多線程編程技術來開發效率更高,響應速度更快的應用程序。
關鍵詞 .NET框架 Visual Basic.NET 多線程 同步
1. 引言
1.1 進程與線程和應用程序域
在操作系統中,進程被定義為應用程序的運行實例,是應用程序的一次動態執行。線程是進程內部程序執行的路徑,是進程的一個執行單元。從根本上說,線程是可由系統調度的一個最簡單的代碼單元,負責執行包含在進程的地址空間中的程序代碼。參見圖1。
在.NET框架中,提出了應用程序域的概念。所有程序編譯后生成的都是中間代碼,而這些中間代碼的隔離、加載和卸載以及安全邊界的提供都是通過應用程序域來實現的。此時,一個進程可以包含一個或多個應用程序域,而一個應用程序域又可以包含一個或多個線程。這樣實際上就相當于在進程和線程之間增加了一個新的安全邊界。無論在同一個進程之內還是在不同的進程之間,每個應用程序域之間都是相互無關的,這些不同的應用程序域之間只能通過遠程通訊來實現消息和對象的傳遞。

圖1 進程、線程和應用程序域之間的關系
1.2 多線程的意義
一個采用了多線程技術的應用程序可以更好地利用系統資源。其主要優勢在于充分利用了CPU的空閑時間片,可以用盡可能少的時間來對用戶的要求做出響應,使得進程的整體運行效率得到較大提高,同時增強了應用程序的靈活性。更為重要的是,由于同一進程的所有線程是共享同一內存,所以不需要特殊的數據傳送機制,不需要建立共享存儲區或共享文件,從而使得不同任務之間的協調操作與運行、數據的交互、資源的分配等問題更加易于解決。
2. Visual basic.net對多線程的支持
2.1 VB對多線程的支持
在舊有的VB6.0及其以前的版本中,較少涉及到多線程的問題。這是因為VB并不是線程安全的,多線程模式的工作原理和編程機制對于VB并不完全適合。在VB6.0的應用中,我們可以通過Win32 CreateThread API來創建一個多線程的應用,或者通過欺騙COM庫而在一個獨立的線程中創建一個組件,不過這些技術都是難以調試和維護的。
2.2 Visual Basic.NET對多線程的支持
由于Visual Basic.NET是基于.NET框架的,而.NET框架的重要組成部分CLR(Common Language Runtime,通用語言運行時)內置支持多線程應用,可以通過系統的System.Threading類直接建立多線程應用程序,并且支持線程池等高級功能。任何.NET框架結構下的語言,包括Visual Basic.NET在編寫多線程應用程序的時候,都可以利用系統類所提供的對象和方法,而不再需要使用Win32 API,因此可以大大減輕開發的困難和錯誤所發生的幾率。