Rumah >pembangunan bahagian belakang >C++ >Async/Await dalam C#: Untuk Menunggu atau Tidak Menunggu? Kesan Terhadap Pelaksanaan
Penggunaan Async/Await dalam C#: Untuk menunggu atau tidak menunggu? Kesan terhadap pelaksanaan
Kod berikut mengandungi enam panggilan ke kaedah Callee
, setiap satu dilaksanakan dengan cara yang berbeza:
Panggilan tak segerak (Fire-and-forget): Callee
Kaedah ini dipanggil secara tak segerak dan tidak menunggu. Kaedah berjalan secara tidak segerak di latar belakang, dan kaedah panggilan meneruskan pelaksanaan serta-merta.
Tunggu panggilan tak segerak: Kaedah Callee
dipanggil dan gunakan await
untuk menunggu selesainya. Kaedah panggilan akan menunggu kaedah Callee
selesai sebelum meneruskan melaksanakan kod berikutnya. Pastikan kaedah Callee
selesai sebelum melaksanakan kod selepasnya.
Panggilan tak segerak menggunakan Task.Run: Kaedah Callee
dimulakan menggunakan Task.Run
tetapi tidak menunggu hasilnya. Seperti dalam kes 1, kaedah Callee
berjalan di latar belakang dan kaedah panggilan meneruskan pelaksanaan serta-merta.
Gunakan Tugasan. Jalankan dan tunggu panggilan tak segerak: Kaedah Callee
dimulakan menggunakan Task.Run
dan tunggu hasilnya. Ini bersamaan dengan kes 2, di mana kaedah panggilan menunggu kaedah Callee
selesai sebelum meneruskan.
Panggilan tak segerak menggunakan Tugas. Jalankan dan tak segerak: Sama seperti kes 3, kecuali kaedah Callee
diisytiharkan sebagai async
. Kata kunci async
membenarkan kaedah dipanggil secara tak segerak walaupun ia dibalut oleh Task.Run
.
Gunakan Tugasan. Jalankan dan nyinkronkan dan tunggu panggilan tak segerak: Sama seperti kes 4, kecuali kaedah Callee
diisytiharkan sebagai async
. Begitu juga, kata kunci async
membenarkan kaedah tunggu walaupun ia dibalut dengan Task.Run
.
Ringkasan: Logik asas panggilan ini adalah seperti berikut:
Kes 1 dan 3: Kaedah Callee
berjalan pada urutan latar belakang dan kaedah panggilan meneruskan pelaksanaan serta-merta.
Kes 2 dan 4: Kaedah panggilan menunggu kaedah Callee
selesai sebelum melaksanakan kod berikutnya.
Kes 5 dan 6: Ini adalah panggilan tak segerak menggunakan Task.Run
untuk pemprosesan selari tambahan. Walau bagaimanapun, kata kunci async
membenarkan menunggu mereka seperti yang diperlukan.
Atas ialah kandungan terperinci Async/Await dalam C#: Untuk Menunggu atau Tidak Menunggu? Kesan Terhadap Pelaksanaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!