使用 Visual Basic .NET 進行多線程編程 目錄
簡介過去,Visual Basic 開發人員創建的應用程序都是程序任務依次執行的同步應用程序。雖然多線程應用程序因多個任務幾乎同時運行而具有更高的效率,但使用早期版本的 Visual Basic 來創建這樣的應用程序卻很困難。 一項稱為多任務處理的操作系統功能使多線程程序成為可能,它能模擬同時運行多個應用程序的功能。雖然多數個人計算機都只安裝了一個處理器,但現代操作系統通過將處理器時間分配給多段可執行代碼(稱為線程),提供了多任務處理功能。線程可以代表整個應用程序,但通常只代表應用程序中可單獨運行的一部分。操作系統根據線程的優先級、上次運行線程后經過的時間等因素為每個線程分配處理時間。在執行耗時的任務(如文件輸入和輸出)時,多線程能夠顯著提高性能。 但要注意一個問題。雖然多線程可以提高性能,但每個線程都需要額外的內存來創建線程,還需要處理器時間來運行線程。如果創建的線程過多,反而會降低應用程序的性能。在設計多線程應用程序時,應在添加更多線程所獲得的好處及其成本之間進行權衡。 多任務處理成為操作系統的一部分已經很長時間了。但直到最近,Visual Basic 程序員也只能通過非正式發布的功能,來執行多線程任務,或者通過使用 COM 組件或操作系統的異步組件,來間接實現此功能。而 .NET 框架在 System.Threading 命名空間中為開發多線程應用程序提供了全面的支持。 本文討論多線程的一些優點以及如何使用 Visual Basic .NET 來開發多線程應用程序。雖然 Visual Basic .NET 和 .NET 框架使多線程應用程序的開發變得很簡單,但本文主要面向中高級開發人員,以及正在從 Visual Basic 的早期版本過渡到 Visual Basic .NET 的開發人員。對于 Visual Basic .NET 的初學者,請首先閱讀 Visual Basic Language Tour(英文)中的相應主題。 本文并非是對多線程編程的全面討論。要獲得更多的信息,請參閱本文最后列出的其他資源。 多線程處理的優點同步應用程序的開發比較容易,但由于需要在上一個任務完成后才能開始新的任務,所以其效率通常比多線程應用程序低。如果完成同步任務所用的時間比預計時間長,應用程序可能會不響應。多線程處理可以同時運行多個過程。例如,文字處理器應用程序在您處理文檔的同時,可以檢查拼寫(作為單獨的任務)。由于多線程應用程序將程序劃分成獨立的任務,因此可以在以下方面顯著提高性能:
是否需要創建多線程應用程序取決于多個因素。在以下情況下,最適合采用多線程處理:
例如,用于跟蹤 Web 頁上的鏈接并下載滿足特定條件的文件的 Internet 應用程序“robot”。這種應用程序可以依次同步下載各個文件,也可以使用多線程同時下載多個文件。多線程方法比同步方法的效率高很多,因為即使在某些線程中遠程 Web 服務器的響應非常慢,也可以下載文件。 創建新線程創建線程最直接的方法是創建新的線程類實例,并使用 AddressOf 語句為要運行的過程傳遞委托。例如,以下代碼將名為 SomeTask 的子過程作為單獨的線程運行。 Dim Thread1 As New System.Threading.Thread(AddressOf SomeTask)Thread1.Start' 此處的代碼立即運行。 以上所述就是創建和啟動線程的方法。在線程 Start 方法調用之后的任何代碼將立即運行,而無需等待前一個線程運行結束。 下表列出了用于控制各個線程的一些方法。
|
溫馨提示:喜歡本站的話,請收藏一下本站!