Interfaccia IExternalConnection (objidl.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 (objidl.h) incrementa il conteggio delle connessioni esterne complesse di un oggetto. |
IExternalConnection::ReleaseConnection Il metodo IExternalConnection::ReleaseConnection (objidl.h) decrementa il conteggio delle connessioni esterne complesse di un oggetto. |
Commenti
IExternalConnection viene generalmente implementato negli oggetti server per consentire 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 una situazione di questo tipo: quando il client di collegamento finale rilascia l'oggetto incorporato (server), viene rilasciata l'ultima connessione esterna sul gestore dello stub dell'oggetto, causando il rilascio dei puntatori alle 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é il gestore stub non ha più un puntatore all'oggetto incorporato. Eventuali modifiche non salvate ai dati dell'oggetto server andrebbero 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 sarà pronto per distruggersi.
Nel marshalling standard, per incrementare il numero di connessioni esterne dell'oggetto, COM chiama IExternalConnection::AddConnection sull'oggetto al primo marshalling dell'oggetto. Il gestore stub chiama i metodi di IExternalConnection sull'oggetto, perché vengono ottenute e rilasciate le connessioni esterne successive. Quando il numero di connessioni esterne dell'oggetto passa a zero, l'oggetto può salvare i dati e quindi revocarsi dalla tabella degli oggetti in esecuzione ed eseguire qualsiasi altra operazione necessaria per ridurre il numero di riferimenti all'oggetto a zero.
Un oggetto che implementa IExternalConnection deve chiamare in modo esplicito CoDisconnectObject su se stesso quando il conteggio dei riferimenti esterni scende a 0. Questa chiamata farà in modo che il gestore stub chiami Release sull'oggetto 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 | objidl.h (include ObjIdl.h) |