Antarmuka IExternalConnection (objidl.h)
Mengelola jumlah koneksi marshaled objek server, atau eksternal. Server yang mempertahankan hitungan seperti itu dapat mendeteksi ketika tidak memiliki koneksi eksternal dan mematikan dirinya secara teratur.
Warisan
Antarmuka IExternalConnection mewarisi dari antarmuka IUnknown . IExternalConnection juga memiliki jenis anggota ini:
Metode
Antarmuka IExternalConnection memiliki metode ini.
IExternalConnection::AddConnection Metode IExternalConnection::AddConnection (objidl.h) menambah jumlah koneksi eksternal objek yang kuat. |
IExternalConnection::ReleaseConnection Metode IExternalConnection::ReleaseConnection (objidl.h) mengurangi jumlah koneksi eksternal objek yang kuat. |
Keterangan
IExternalConnection paling sering diimplementasikan pada objek server, untuk mengaktifkan pematian tautan secara teratur ke objek yang disematkan setelah pembaruan senyap. Objek yang tidak menerapkan risiko IExternalConnection kehilangan data dalam situasi seperti itu: Ketika klien tautan akhir merilis objek (server) tersemat, koneksi eksternal terakhir pada manajer stub objek dirilis, menyebabkan manajer stub melepaskan pointernya ke antarmuka pada objek yang disematkan dan memulai pematian objek. Pada titik ini, objek server memanggil IOleClientSite::SaveObject pada kontainer tautan, dan panggilan kembali kontainer tautan ke IPersistStorage::Simpan gagal karena manajer stub tidak lagi memiliki penunjuk ke objek yang disematkan. Setiap perubahan yang belum disimpan pada data objek server kemudian akan hilang.
Namun, jika objek server mengimplementasikan IExternalConnection, manajer stub-nya tidak akan melepaskan koneksinya ke objek ketika koneksi eksternal terakhir dirilis. Sebaliknya, ia akan tetap terhubung sampai objek siap untuk menghancurkan dirinya sendiri.
Dalam marsekal standar, untuk menambah jumlah koneksi eksternal objek, COM memanggil IExternalConnection::AddConnection pada objek saat objek pertama kali dinamai marshal. Manajer stub memanggil metode IExternalConnection pada objek karena koneksi eksternal berikutnya diperoleh dan dirilis. Ketika jumlah koneksi eksternal objek masuk ke nol, objek dapat menyimpan datanya dan kemudian mencabut dirinya dari tabel objek yang sedang berjalan dan melakukan apa pun yang diperlukan untuk mengurangi jumlah referensi objeknya menjadi nol.
Objek yang mengimplementasikan IExternalConnection harus secara eksplisit memanggil CoDisconnectObject pada dirinya sendiri ketika jumlah referensi eksternalnya turun ke 0. Panggilan ini akan menyebabkan manajer stub memanggil Rilis pada objek sehingga objek dapat menghancurkan dirinya sendiri.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | objidl.h (termasuk ObjIdl.h) |