Rumah >pembangunan bahagian belakang >C++ >Async/Await dalam C#: Untuk Menunggu atau Tidak Menunggu? Kesan Terhadap Pelaksanaan

Async/Await dalam C#: Untuk Menunggu atau Tidak Menunggu? Kesan Terhadap Pelaksanaan

Susan Sarandon
Susan Sarandonasal
2025-01-12 13:22:43906semak imbas

Async/Await in C#:  To Await or Not to Await?  The Impact on Execution

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn