文章編號: 206076 - 上次校閱: 2008年5月22日 - 版次: 7.0 如何跨 apartments Visual C++ 中,介面封送處理
附註Microsoft Visual C++ 2008年、 Microsoft Visual C++ 2005年、 Microsoft Visual C++.NET 2003 及 Microsoft Visual C++.NET 2002年支援 Managed 程式碼模型所提供的 Microsoft.NET Framework 和不受管理的原生 Microsoft Windows 程式碼模型。本文資訊僅適用於不受管理的 Visual C++ 程式碼。 結論Marshal.exe 是範例所示範的封送處理介面 apartments 跨不同的方式。 其他相關資訊下列檔案是可以從 Microsoft 下載中心 」 下載: 摺疊此圖像 ![]() 如需有關如何下載 Microsoft 支援檔案的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]: 119591?
(http://support.microsoft.com/kb/119591/
)
如何從線上服務取得 Microsoft 的支援檔案 Microsoft 已掃描這個檔案有無病毒。Microsoft 使用已張貼檔案的日期中的 [可用的最新病毒偵測軟體。檔案儲存在安全性強化的伺服器上,協助防止未經授權的任何變更的檔案。 一個 Single-Threaded 公寓 (STA) 是以 CoInitialize() 或 CoInitializeEx (NULL,COINIT_APARTMENTTHREADED) 已初始化的執行緒。而且,CoInitialize() 或 CoInitializeEx() COM 初始化為它的執行緒,必須也呼叫任何其他的執行緒在相同的處理序中,使用 COM。 如果您在一個 STA 中建立 COM 物件執行緒,您不傳送介面指標到另一個 STA 執行緒和呼叫出該指標上。由於 STA 物件的呼叫都應該要進行序列化,COM 會強制這藉由只允許一個執行緒來呼叫進入 STA 物件 (當初建立的執行緒)。如果您傳遞給第二個 STA 執行緒的介面指標的指標,Proxy 會得到錯誤 HRESULT 0x8001010E 或 RPC_E_WRONG_THREAD (應用程式的不同的執行緒呼叫已封送處理的介面)。如果介面指標,物件的直接指標 COM 不會強制執行序列化、 不會得到上述的錯誤也將進行介面方法呼叫。不過,這是仍然不合法的用戶端的行為。 您可以仍然呼叫方法上 STA 物件從不同的 STA 執行緒,只要您透過 Proxy 執行。Proxy 是透過封送處理/unmarshaling 取得介面的複本。當您可透過 Proxy COM 可呼叫執行緒切換控制和呼叫最後在 STA 物件已建立的執行緒的內容中執行。 有三種方法來封送處理/unmarshal 至另一個 STA 執行緒介面:
?考這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:206076?
(http://support.microsoft.com/kb/206076/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方

