共用方式為


CoReleaseServerProcess 函式 (combaseapi.h)

遞減全域每個進程參考計數。

Syntax

ULONG CoReleaseServerProcess();

傳回值

如果伺服器應用程式應該起始清除,則函式會傳回 0;否則,函式會傳回非零值。

備註

伺服器可以呼叫 CoReleaseServerProcess ,以遞減透過 對 CoAddRefServerProcess 的呼叫遞增的全域個別進程參考計數。

當計數達到零時,OLE 會自動呼叫 CoSuspendClassObjects,這可防止新的啟用要求傳入。 這可讓伺服器從其各種線程取消註冊其類別物件,而不必擔心另一個啟用要求可能會發生。 新的啟用要求會導致啟動本機伺服器進程的新實例。

使用這些函式的本機伺服器應用程式最簡單的方式,就是呼叫每個實例物件的建構函式中的CoAddRefServerProcess,並在 fLock 參數為 TRUE 時,在每個 IClassFactory::LockServer 方法中呼叫 CoAddRefServerProcess。 當 fLock 參數為 FALSE 時,伺服器應用程式也應該在其每個實例物件的解構函式中呼叫 CoReleaseServerProcess,並在其每個 IClassFactory::LockServer 方法中呼叫 CoReleaseServerProcess。 最後,伺服器應用程式必須檢查 來自 CoReleaseServerProcess 的傳回碼;如果傳回 0,伺服器應用程式應該起始其清除。 這通常表示具有多個線程的伺服器應該發出各種線程的訊號,以結束其訊息迴圈,並呼叫 CoRevokeClassObjectCoUninitialize

如果完全使用這些 API,則必須在物件實例和 LockServer 方法中呼叫它們,否則伺服器應用程式可能會提前關閉。 同進程伺服器通常不應該呼叫 CoAddRefServerProcessCoReleaseServerProcess

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 combaseapi.h (包含 Objbase.h)
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory::LockServer

跨進程伺服器實作協助程式