Antarmuka System.IAsyncDisposable

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Di .NET, kelas yang memiliki sumber daya yang tidak dikelola biasanya mengimplementasikan IDisposable antarmuka untuk menyediakan mekanisme untuk merilis sumber daya yang tidak dikelola secara sinkron. Namun, dalam beberapa kasus mereka perlu menyediakan mekanisme asinkron untuk merilis sumber daya yang tidak dikelola selain (atau bukan) yang sinkron. Menyediakan mekanisme seperti itu memungkinkan konsumen untuk melakukan operasi pembuangan intensif sumber daya tanpa memblokir utas utama aplikasi GUI untuk waktu yang lama.

Metode IAsyncDisposable.DisposeAsync antarmuka ini mengembalikan ValueTask yang mewakili operasi pembuangan asinkron. Kelas yang memiliki sumber daya yang tidak dikelola menerapkan metode ini, dan konsumen kelas-kelas ini memanggil metode ini pada objek ketika tidak lagi diperlukan.

Metode asinkron digunakan bersama dengan async kata kunci dan await di C# dan Visual Basic. Untuk informasi selengkapnya, lihat Model pemrograman asinkron Tugas di C# atau Pemrograman Asinkron dengan Asinkron dan Tunggu (Visual Basic).

Menggunakan objek yang mengimplementasikan IAsyncDisposable

Jika aplikasi Anda menggunakan objek yang mengimplementasikan IAsyncDisposable, Anda harus memanggil implementasi objek DisposeAsync ketika Anda selesai menggunakannya. Untuk memastikan sumber daya dirilis bahkan jika terjadi pengecualian, masukkan kode yang menggunakan objek ke dalam pernyataan penggunaan (di C# mulai dari versi 8.0) atau panggil DisposeAsync metode di dalam finally klausulfinally/tryIAsyncDisposable pernyataan. Untuk informasi selengkapnya tentang pola, try/finally lihat try-finally (C#) atau Coba... Menangkap... Pernyataan Terakhir (Visual Basic).

Menerapkan IAsyncDisposable

Anda mungkin menerapkan IAsyncDisposable dalam situasi berikut:

  • Saat mengembangkan enumerator asinkron yang memiliki sumber daya yang tidak dikelola. Enumerator asinkron digunakan dengan fitur aliran asinkron C# 8.0. Untuk informasi selengkapnya tentang aliran asinkron, lihat Tutorial: Membuat dan menggunakan aliran asinkron menggunakan C# 8.0 dan .NET Core 3.0.
  • Ketika kelas Anda memiliki sumber daya yang tidak dikelola dan melepaskannya memerlukan operasi I/O intensif sumber daya, seperti membersihkan konten buffer perantara ke dalam file atau mengirim paket melalui jaringan untuk menutup koneksi.

DisposeAsync Gunakan metode untuk melakukan pembersihan apa pun yang diperlukan setelah menggunakan sumber daya yang tidak dikelola, seperti membebaskan, melepaskan, atau mengatur ulang sumber daya yang tidak dikelola. Untuk informasi selengkapnya, lihat Menerapkan metode DisposeAsync.