Condividi tramite


Interfaccia IExternalConnection (objidlbase.h)

Gestisce il conteggio di un oggetto server di connessioni di cui è stato eseguito il marshalling o esterne. Un server che gestisce tale conteggio può rilevare quando non ha connessioni esterne e si arresta in modo ordinato.

Ereditarietà

L'interfaccia IExternalConnection eredita dall'interfaccia IUnknown . IExternalConnection include anche questi tipi di membri:

Metodi

L'interfaccia IExternalConnection include questi metodi.

 
IExternalConnection::AddConnection

Il metodo IExternalConnection::AddConnection (objidlbase.h) incrementa il conteggio delle connessioni esterne complesse di un oggetto.
IExternalConnection::ReleaseConnection

Il metodo IExternalConnection::ReleaseConnection (objidlbase.h) decrementa il conteggio delle connessioni esterne complesse di un oggetto.

Commenti

IExternalConnection è più comunemente implementato negli oggetti server, per abilitare l'arresto ordinato di un collegamento a un oggetto incorporato dopo un aggiornamento invisibile all'utente. Gli oggetti che non implementano IExternalConnection rischiano di perdere dati in tale situazione: quando il client di collegamento finale rilascia l'oggetto incorporato (server), l'ultima connessione esterna sul gestore stub dell'oggetto viene rilasciata, causando il rilascio del puntatore a interfacce sull'oggetto incorporato e l'avvio dell'arresto dell'oggetto. A questo punto, l'oggetto server chiama IOleClientSite::SaveObject nel contenitore di collegamento e la chiamata restituita del contenitore di collegamento a IPersistStorage::Save ha esito negativo perché la gestione stub non ha più un puntatore all'oggetto incorporato. Tutte le modifiche non salvate ai dati dell'oggetto server verranno quindi perse.

Se l'oggetto server implementa IExternalConnection, tuttavia, la gestione stub non rilascia la connessione all'oggetto quando viene rilasciata l'ultima connessione esterna. Rimarrà invece connesso fino a quando l'oggetto non è pronto per distruggersi.

Nel marshalling standard, per incrementare il conteggio delle connessioni esterne dell'oggetto, COM chiama IExternalConnection::AddConnection sull'oggetto quando l'oggetto viene eseguito il marshalling. Il gestore stub chiama i metodi di IExternalConnection nell'oggetto, poiché le connessioni esterne successive vengono ottenute e rilasciate. Quando il conteggio delle connessioni esterne dell'oggetto passa a zero, l'oggetto può salvare i dati e quindi revocare i dati dalla tabella oggetti in esecuzione e eseguire qualsiasi altra operazione necessaria per ridurre il numero di riferimenti dell'oggetto a zero.

Un oggetto che implementa IExternalConnection deve chiamare in modo esplicito CoDisconnectObject in se stesso quando il numero di riferimenti esterni scende a 0. Questa chiamata causerà la chiamata del gestore stub all'oggetto Release in modo che l'oggetto possa distruggersi.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidlbase.h (include ObjIdl.h)

Vedi anche

CoDisconnectObject

CoLockObjectExternal

Ioleobject