IExternalConnection 介面 (objidl.h)

管理伺服器物件的封送處理或外部連線計數。 維護這類計數的伺服器可以偵測其沒有外部連線時,並依序關閉本身。

繼承

IExternalConnection 介面繼承自 IUnknown 介面。 IExternalConnection 也有下列類型的成員:

方法

IExternalConnection 介面具有這些方法。

 
IExternalConnection::AddConnection

IExternalConnection::AddConnection 方法 (objidl.h) 遞增物件的強外部連線計數。
IExternalConnection::ReleaseConnection

IExternalConnection::ReleaseConnection 方法 (objidl.h) 遞減物件的強外部連線計數。

備註

IExternalConnection 最常在伺服器對象上實作,以在無訊息更新之後,啟用內嵌物件連結的排序關機。 在這類情況下,未實作 IExternalConnection 的物件會遺失數據:當最終連結客戶端釋放內嵌 (伺服器) 物件時,會釋放物件存根管理員上的最後一個外部連接,導致存根管理員釋放其指向內嵌物件介面的指標,並起始物件的關機。 此時,伺服器物件會在連結容器上呼叫 IOleClientSite::SaveObject ,而連結容器對 IPersistStorage::Save 的傳回呼叫會失敗,因為存根管理員不再具有內嵌物件的指標。 伺服器對象數據的任何未儲存變更都會遺失。

不過,如果伺服器對象實作 IExternalConnection,當最後一個外部連接釋放時,其存根管理員將不會釋放其與對象的連接。 相反地,它會保持連線,直到物件準備好自行終結為止。

在標準封送處理中,若要遞增物件的外部連接計數,COM 會在物件第一次封送處理時呼叫物件上的 IExternalConnection::AddConnection 。 存根管理員會在取得並釋放後續的外部連接時,呼叫 物件上的 IExternalConnection 方法。 當物件的外部連接計數變成零時,物件可以儲存其數據,然後從執行中的對象數據表撤銷本身,並執行任何其他作業,以將其對象參考計數縮減為零。

實作 IExternalConnection 的對象應該在其外部參考計數下降至 0 時,明確呼叫其本身上的 CoDisconnectObject 。 此呼叫會導致存根管理員在 物件上呼叫 Release ,讓物件可以自行終結。

規格需求

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

另請參閱

CoDisconnectObject

CoLockObjectExternal

IOleObject