Operasi Asinkron

Operasi database dapat memakan waktu yang signifikan untuk diselesaikan. Untuk menjaga antarmuka pengguna tetap responsif atau menghindari pemblokiran utas permintaan, gunakan metode database asinkron alih-alih menunggu secara sinkron agar perintah selesai.

Pasang paket NuGet Microsoft.Data.SqlClient untuk kode klien SQL. Untuk aplikasi baru, gunakan OpenAsync dan metode ExecuteNonQueryAsync, ExecuteReaderAsync, dan ExecuteXmlReaderAsync dengan await. Metode ini melakukan input/output asinkron (I/O) tanpa mengharuskan Anda membuat utas latar belakang.

Microsoft.Data.SqlClient juga mendukung pola panggilan balik, wait handle, dan polling yang dijelaskan di bagian ini. Metode BeginExecuteNonQuery, BeginExecuteReader, dan BeginExecuteXmlReader dipasangkan dengan EndExecuteNonQuery, EndExecuteReader, dan EndExecuteXmlReader. Jangan tambahkan Asynchronous Processing=true ke string koneksi; Microsoft. Data.SqlClient tidak mendukung kata kunci tersebut.

Nota

Untuk kode baru, gunakan pola asinkron berbasis Tugas. Contoh di bagian ini menunjukkan pola yang didukung Begin/End untuk aplikasi yang memerlukan panggilan balik, wait handle, atau polling.

Pertahankan setiap koneksi dan perintah tetap hidup hingga operasinya selesai. Tangani pengecualian saat Anda memanggil metode pencocokan End atau menunggu tugas. Dalam aplikasi desktop, perbarui kontrol hanya dari utas antarmuka pengguna.

Pada bagian ini

Aplikasi Windows Menggunakan Panggilan Balik Menyediakan contoh yang menunjukkan cara menjalankan perintah asinkron dengan aman, menangani interaksi dengan benar dengan formulir dan kontennya dari utas terpisah.

Aplikasi ASP.NET Menggunakan Handle Tunggu Menyediakan contoh yang menunjukkan cara mengeksekusi beberapa perintah secara bersamaan dari halaman ASP.NET, menggunakan Handle Tunggu untuk mengelola operasi setelah semua perintah selesai.

Polling di Aplikasi Konsol Menyediakan contoh yang menunjukkan penggunaan polling untuk menunggu penyelesaian eksekusi perintah asinkron dari aplikasi konsol. Teknik ini juga valid di pustaka kelas atau aplikasi lain tanpa antarmuka pengguna.

Lihat juga