Rumah > pembangunan bahagian belakang > C++ > Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async/Await?

Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async/Await?

DDD
Lepaskan: 2025-01-03 13:42:40
asal
739 orang telah melayarinya

When Should I Use `Task.Run` with Async/Await?

Memahami Async/Await: When to Use Task. Run

Dalam bidang pengaturcaraan async, adalah penting untuk membezakan antara kaedah tak segerak ( async) dan pelaksanaan tak segerak (benang latar belakang). Untuk menyelidiki nuansa, mari kita terokai senario berikut:

Senario 1: Tiada Benang Latar Belakang

private async Task DoWork1Async()
{
    int result = 1 + 2;
}
Salin selepas log masuk

Dalam contoh ini, kaedah ditandakan sebagai tidak segerak tetapi melakukan operasi remeh yang tidak memerlukan pelaksanaan latar belakang. Oleh itu, menunggu DoWork1Async() akan dilaksanakan secara serentak.

Senario 2: Melaksanakan pada Benang Latar Belakang

private async Task DoWork2Async()
{
    Task.Run( () =>
    {
        int result = 1 + 2;
    });
}
Salin selepas log masuk

Di sini, kaedah itu sekali lagi ditandakan sebagai tak segerak, tetapi ia membungkus operasi sebenar dalam Task.Run. Ini memastikan bahawa operasi dilaksanakan pada benang latar belakang. Walau bagaimanapun, menunggu DoWork2Async() masih akan dilaksanakan secara serentak, kerana operasi benang latar belakang tidak ditunggu.

Jenis Pemulangan Kaedah dan Gelagat Async

Jenis pemulangan a kaedah juga boleh mempengaruhi tingkah laku asyncnya. Kaedah mengembalikan Tugasan atau Tugas boleh ditunggu. Ini bermakna dalam kaedah async, kita boleh menggunakan await untuk menggantung pelaksanaannya dan menyambung semula kemudian apabila tugasan yang ditunggu selesai.

Task.Run for Asynchronous Execution

Untuk menjadikan kaedah menunggu dan melaksanakan operasinya pada urutan latar belakang, kita harus menggunakan Task.Run untuk mencipta tugasan baharu. Pendekatan ini lebih sesuai daripada membungkus keseluruhan kaedah dalam Task.Run kerana ia membolehkan kita mengekalkan pemisahan yang jelas antara kod segerak dan tak segerak.

private Task<int> DoWorkAsync() // No async because the method does not need await
{
  return Task.Run(() =>
  {
    return 1 + 2;
  });
}
Salin selepas log masuk

Amalan Terbaik

  • Gunakan Task.Run untuk pelaksanaan benang latar belakang.
  • Elakkan membungkus kaedah segerak dalam Task.Run; biarkan pengguna memutuskan cara untuk melaksanakannya.
  • Ambil sintaks pengisytiharan async/tunggu untuk menulis kod tak segerak.
  • Rujuk dokumentasi MSDN tentang async untuk butiran lanjut.

Atas ialah kandungan terperinci Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async/Await?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan