Bagikan melalui


Antarmuka IClosable (windows.foundation.h)

Menentukan metode untuk merilis sumber daya yang dialokasikan.

Warisan

Antarmuka IClosable mewarisi dari antarmuka IInspectable . IClosable juga memiliki jenis anggota ini:

Metode

Antarmuka IClosable memiliki metode ini.

 
IClosable::Close

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, melepaskan, atau mengatur ulang sumber daya yang dialokasikan.

Keterangan

Gunakan antarmuka IClosable untuk mengelola masa pakai sumber daya sistem, seperti handel file dan soket jaringan, yang digunakan oleh objek Windows Runtime.

Beberapa sumber daya sistem digunakan secara eksklusif oleh satu bagian kode dan harus dikosongkan sebelum kode lain dapat menggunakannya. Misalnya, membuka file untuk akses baca/tulis mencegah kode lain membuka file yang sama untuk akses baca/tulis, sehingga kode yang membuka file harus menutup handel file sebelum kode lain dapat membukanya.

Sumber daya sistem lainnya tidak digunakan secara eksklusif. Banyak perangkat keras, seperti sensor, geolokasi, SMS, dan perangkat portabel dapat dibuka beberapa kali dalam aplikasi yang sama atau oleh beberapa aplikasi.

Antarmuka IClosable memungkinkan pengelolaan sumber daya sistem penggunaan eksklusif. Saat Anda memanggil metode Tutup pada objek Windows Runtime, objek merilis sumber daya sistemnya sehingga tersedia untuk digunakan kode lain. Objek yang hanya menggunakan sumber daya sistem bersama, seperti memori dan perangkat yang dapat dibagikan, tidak mengimplementasikan IClosable.

Saat Anda menerapkan metode Tutup dalam objek Windows Runtime, kode Anda harus merilis semua sumber daya penggunaan eksklusif yang dipegangnya. Jika objek memiliki referensi ke objek Windows Runtime lain yang dapat didekatkan, objek harus memanggil Tutup pada objek sebelum dirilis. Selain itu, kode Anda harus merilis sumber daya lain, seperti referensi ke objek Windows Runtime dan Component Object Model (COM) lainnya, dan sumber daya sistem non-eksklusif seperti buffer memori.

Memanggil metode Tutup pada objek meninggalkan objek dalam memori, tetapi objek tidak lagi memiliki sumber daya sistem yang diperlukan untuk berfungsi dengan baik. Anggota yang bergantung pada sumber daya sistem yang dirilis harus mengembalikan RO_E_CLOSED untuk menunjukkan bahwa objek ditutup dan bahwa anggota ini tidak lagi berfungsi.

Metode yang ditentukan oleh antarmuka IUnknown dan IInspectable harus terus berfungsi secara normal setelah Tutup dipanggil.

Memanggil Tutup pada objek yang sudah ditutup tidak berpengaruh dan mengembalikan S_OK.

Biasanya, objek Anda melacak status tertutupnya dengan mengatur bendera boolean saat Tutup dipanggil, atau dengan memeriksa sumber daya yang disimpan untuk nilai null atau sentinel lainnya.

Objek tidak perlu menyinkronkan akses ke metode Tutup . Ini berarti bahwa kondisi balapan dimungkinkan di mana satu utas memanggil Tutup pada objek saat utas lain menggunakan objek . Dalam hal ini, dimungkinkan untuk mendapatkan kesalahan selain RO_E_CLOSED, tetapi Anda harus memastikan bahwa objek tidak menyebabkan pelanggaran akses.

Metode Tutup tidak memblokir saat menunggu operasi asinkron selesai. Jadi sumber daya sistem yang mendasar mungkin tidak sepenuhnya dirilis ketika metode Tutup kembali. Untuk memastikan penutupan deterministik, pemanggil harus menunggu semua operasi asinkron selesai atau dibatalkan. Objek harus selesai melepaskan sumber daya sistem mereka secepat mungkin dalam menghadapi operasi asinkron yang luar biasa, tetapi tidak boleh memblokir saat menunggu ini selesai.

Jika objek Windows Runtime Anda yang dapat didekatkan mengekspos sumber daya yang digunakan secara eksklusif ke objek lain, objek tersebut harus menyediakan cara untuk memengaruhi semantik kepemilikan objek yang dapat didekatkan yang dipegangnya. Misalnya, kelas DataReader menyediakan metode DetachStream yang mengembalikan IInputStream yang diterimanya saat dibuat. Ketika DetachStream dipanggil, DataReader tidak lagi menjadi pemilik IInputStream, sehingga DataReader tidak memanggil Tutup pada IInputStream.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Server minimum yang didukung Windows Server 2012
Target Platform Windows
Header windows.foundation.h