現在你已經對.NET 中的網絡編程有了一個初步的了解,現在我們來實際討論下本章將要實現的示例程序。這個例子的目的是通過創建一個網絡應用程序來讓你熟悉線程的使用。這個程序實際上由兩個小的Windows 窗體程序組成,一個作為服務端而另外一個作為客戶端。我們將使用Visual Studio.NET ...
好的,我們現在來創建服務端程序。由於目的系統的多客戶端特性,我們在創建StockServer 程序時要采用一個稍微不同的方案。我們想要跟蹤客戶端行為並知道它們什么時候連接 斷開。由於為每個客戶端生成一個單一實例所以客戶端管理器在這方面很高效。因此我們將要創建一個能夠表示客戶端連接到服務端的這個過程的一個客戶類,如下圖類圖所示: 圖 每個連接到服務端的客戶端都會創建一個新的QuoteClient ...
2012-06-17 18:31 7 2798 推薦指數:
現在你已經對.NET 中的網絡編程有了一個初步的了解,現在我們來實際討論下本章將要實現的示例程序。這個例子的目的是通過創建一個網絡應用程序來讓你熟悉線程的使用。這個程序實際上由兩個小的Windows 窗體程序組成,一個作為服務端而另外一個作為客戶端。我們將使用Visual Studio.NET ...
我們將寫一個簡單的例子。對於我們為什么使用一個新的線程來說這不是一個好例子但是它將我們稍后要提到的復雜問題都去掉了。創建一個simple_thread.cs文件並把下面的代碼粘貼進去: /************************************* /* Copyright (c ...
在這部分我們將看兩個大的例子。首先,我們將看一下創建線程安全的包裝器的例子,然后看一下數據庫連接池例子。 實現自己的線程安全包裝器 實現自己的線程安全包裝器主要基於你可能不想讓類庫中的每個類都是線程安全的,而使用同步也會帶來性能問題的事實。你可能想要為開發人員提供一個是否使用一個同步類的選擇 ...
Abort()方法可以用來終止當前線程。不論何種情況下你想終止線程,比如線程執行了太長時間或者用戶取消了之前的決定,Abort()方法都很重要。在一個花費很長時間的搜索進程中你可能想使用這個方法。一個搜索引擎可能在繼續運行但是用戶已經看到了他們想要的結果,所以用戶會終止搜索引擎所運行的線程。當在 ...
一個STA和一個MTA線程單元最大的不同是再同一個線程單元中可以有多個線程運行並可以使用所有共享數據。如圖2所示。 圖 2 由於MTA線程模型支持多線程並發執行,所以處理多線程間全局數據的同步問題就變成了調用方的事情了。關於同步問題我們已經在上一章描述過。 確定線程模型 可以使 ...
的C#應用程序並在一個新線程中生成素數。這個應用程序有掛起以及恢復素數生成線程的選項。為了方便操作和演示 ...
額,我猜你現在可能會這么想“既然線程會對我的程序產生負面影響,那么我為什么要使用它呢?”。其實問題的關鍵不在於到底用不用線程,而在於何時何地使用線程。知道在什么情況下應該使用線程是好的設計決策的核心。使用線程有兩個不同的優勢。在這一部分,我們將討論這兩個優勢是什么。 后台處理邏輯 第一個使用 ...
你也會注意到任務管理器中有CPU使用率的信息。這是因為進程也有一個使用計算機處理器的執行順序。這個執行順序就是線程。這個線程由CPU上正在使用的寄存器,線程使用的堆棧以及保存線程當前狀態的存儲器共同定義。存儲器和堆棧的概念對那些經常處理底層內存分配的同僚們來說應該很熟悉;然而,對.NET ...