共用方式為


AutoThread 範例:示範 CAtlAutoThreadModule 的用法

更新:2007 年 11 月

AutoThread 範例示範使用 CAtlAutoThreadModule。伺服器是在 Server.exe 檔中實作。EXE 的模組是衍生自 CAtlAutoThreadModule,而不是衍生自 CAtlModule

AutoThread 屬性範例是本範例使用屬性的版本。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置和執行這個範例

  1. 開啟 AutoThread.sln 方案檔。

  2. 在 [建置] 功能表中,按一下 [建置方案]。這會建置並登錄用戶端和伺服器。

  3. 啟動 ActiveX 控制項測試容器的兩個執行個體。如需存取測試容器的詳細資訊,請參閱用測試容器測試屬性和事件

  4. 將其中一個用戶端控制項 (AutoCtl Class) 插入至每一個測試容器中。

  5. 按一下其中一個控制項並且請注意伺服器需要一秒才能傳回。

  6. 定位並且調整測試容器的大小,讓這兩者都能同時顯示。

  7. 按一下其中一個控制項,然後快速地按一下另一個控制項。請注意,它們大約都會在相同時間完成等候 (如果沒有使用 CAtlAutoThreadModule,第一個控制項會在一秒之後完成,但是第二個控制項會在第一個控制項完成之後的一秒後完成。對 Sleep 的第二個呼叫會在第一個控制項完成之後發生)。您可以使用 Delay(PropGet)Delay(PropPut) 方法來調整伺服器休眠的毫秒數。如果正確地設定,對 Sleep 的第二個呼叫可能會在對 Sleep 的第一個呼叫之前傳回。

範例如何操作

伺服器介面只有一個方法:Sleep。這個方法會讓伺服器執行緒休眠一段指定的時間。範例的用戶端部分是一個 ActiveX 控制項,這個控制項可以在當使用者按一下控制項時叫用讓伺服器的休眠方法。用戶端也有一個名為 Delay 的屬性 (Property),代表伺服器執行緒要休眠多久。當控制項等候使用者按鈕時,它會顯示文字「就緒」。當控制項等候伺服器完成休眠時,會顯示文字「等待中」。

關鍵字

本範例使用下列關鍵字:

AtlGetObjectSourceInterface; BEGIN_SINK_MAP; CoCreateInstance; DECLARE_CLASSFACTORY_SINGLETON; IDispEventSimpleImpl::DispEventAdvise; END_SINK_MAP; IConnectionPointContainerImpl; IConnectionPointImpl; IDispEventImpl; OLE2CT; SINK_ENTRY_EX; SysAllocString; USES_CONVERSION; VARIANT; VariantClear; VariantCopy

請參閱

其他資源

ATL 範例