FREETHRD 範例:具有編譯器 COM 支援的多執行緒用戶端和無限制執行緒伺服器
更新:2007 年 11 月
本範例示範具有編譯器 COM 支援的多執行緒用戶端和無限制執行緒伺服器。
本範例由以下部分組成:
Freclien,多執行緒用戶端
FRESERVE,無限制執行緒同處理序伺服器
安全性注意事項: |
---|
這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。 |
若要取得範例和指示以便進行安裝:
按一下 Visual Studio [說明] 功能表上的 [範例]。
如需詳細資訊,請參閱尋找範例檔案。
最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。
您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。
建置和執行範例
若要建置和執行這個範例
開啟 freethrd.sln 方案。
建置伺服器專案,然後建置用戶端專案。
將用戶端專案做為啟始專案 (以滑鼠右鍵按一下專案節點,然後按一下 [設定為啟始專案]) 並執行此範例。
範例如何操作
Freclien 範例會大量產生多重執行緒,以建立並使用 Freserve 無限制執行緒伺服器所提供的 COBall COM 物件。COBall 物件本身並不會產生任何執行緒,而是會被動地回應來自許多可能的用戶端執行緒的 IBall 介面要求。Freclien 用戶端會透過物件所公開的 IBall 介面,建立並控制一個 COBall 物件。當三個 Freclien 的執行緒透過對 IBall::Move 的呼叫來移動此球形物件時,其餘的主執行緒就會使用系統計時器,來取得 COBall 物件的位置、大小和色彩的定時更新。這個主執行緒會使用藉由呼叫 IBall::GetBall 所取得的資料,在用戶端的主視窗中顯示球形物件的圖形快照影像。
在 Freserve 範例中,COBall 物件會以內部方式更新它的色彩屬性,以反映呼叫物件 Move 方法的最後一個執行緒。顯示執行緒對它所顯示的每個球形物件影像都是使用這筆資料。當球形物件移動時,它的顏色會改變,以反映移動此球形物件的每一個執行緒。當球形物件移動時,它會同時對這些正在傳遞的執行緒留下一個軌跡,以提供明顯的視覺歷程記錄。這個軌跡說明,透過使用 COM 的無限制執行緒模式,對相同物件提出介面要求的每一個執行緒,都會存取位於呼叫執行緒上的物件。單一球形物件的每個不同顏色都是表示一個不同的呼叫執行緒。
本範例使用原生編譯器 COM 支援。它提供自訂 COM 介面 (將 RECT 和 POINT 結構隨無限制執行緒模型一同封送) 的範例,同時也示範 #import 指示詞的 exclude 屬性的用法。