Rumah >pembangunan bahagian belakang >C++ >Task.Run vs. Async Kata Kunci: Bila Untuk Menggunakan Setiap untuk Operasi Asynchronous?

Task.Run vs. Async Kata Kunci: Bila Untuk Menggunakan Setiap untuk Operasi Asynchronous?

DDD
DDDasal
2025-01-05 11:48:39135semak imbas

Task.Run vs. Async Keyword: When to Use Each for Asynchronous Operations?

Asynchronicity in Do Work Methods: Task.Run vs. Async Keyword

Dalam bidang pengaturcaraan async, perbezaan antara pelaksanaan tak segerak dan penantian boleh diwarnakan. Mari kita mendalami spesifik Task.Run dan kata kunci async dan fahami peranan mereka dalam mencipta kaedah yang melaksanakan sama ada secara serentak atau tidak segerak.

Pelaksanaan Asynchronous: Task.Run

Kaedah Task.Run membolehkan anda mewakilkan pelaksanaan kod kepada urutan latar belakang. Dengan mencipta objek Tugas yang merangkum kod, Task.Run membolehkan anda melaksanakan kod secara tidak segerak tanpa menyekat laluan pelaksanaan semasa. Walau bagaimanapun, menggunakan Task.Run tidak semestinya membuat kaedah menunggu.

Kebolehan menunggu: Kata Kunci Async

Kaedah async ialah kaedah yang boleh dijeda dan disambung semula semasa menunggu ungkapan. Ini membolehkan kaedah untuk menghasilkan mata pelaksanaan kembali ke utas panggilan tanpa menyekat. Kaedah yang diisytiharkan sebagai tidak segerak boleh mengembalikan Tugas atau Tugas (untuk nilai pulangan berparameter).

Contoh: Pelaksanaan tanpa Async/Await

// Not async because it does not use await
private Task<int> DoWorkAsync()
{
  return Task.Run(() =>
  {
    return 1 + 2;
  });
}

Dalam contoh ini, kami mengembalikan Tugasan daripada perwakilan Tugas.Jalankan. Walau bagaimanapun, kaedah itu sendiri tidak diisytiharkan sebagai async, kerana ia tidak menggunakan await.

Contoh: Async Execution with Await

private async Task<int> GetWebPageHtmlSizeAsync()
{
  var client = new HttpClient();
  var html = await client.GetAsync("http://www.example.com/");
  return html.Length;
}

Dalam contoh ini, kaedah diisytiharkan sebagai async dan penggunaan menunggu untuk menjeda pelaksanaan pada operasi HttpClient.GetAsync. Kaedah ini akan memberikan kembali kepada pemanggil semasa halaman web sedang dimuat turun, dan kemudian menyambung semula apabila hasilnya tersedia.

Amalan Terbaik:

  1. Pertimbangkan menggunakan kata kunci async untuk mencipta kaedah yang boleh menjeda dan menyambung semula pelaksanaan.
  2. Gunakan Task.Run untuk melaksanakan kod secara tidak segerak pada urutan latar belakang, tetapi hanya jika anda perlu mengelak daripada menyekat laluan pelaksanaan semasa.
  3. Elakkan membungkus kaedah segerak sepenuhnya dalam Task.Run. Kaedah segerak harus mempunyai tandatangan segerak.

Kesimpulan:

Task.Run memudahkan pelaksanaan tak segerak dengan mewakilkan kod ke urutan latar belakang. Kata kunci async membolehkan menunggu dan membenarkan kaedah untuk menjeda dan menyambung semula pelaksanaan, memberikan fleksibiliti untuk mencipta kod responsif dan cekap.

Atas ialah kandungan terperinci Task.Run vs. Async Kata Kunci: Bila Untuk Menggunakan Setiap untuk Operasi Asynchronous?. 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