Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menjalankan dan Mengumpul Hasil daripada Tugasan Async Selari dengan Cekap dalam .NET 4.5?

Bagaimanakah Saya Boleh Menjalankan dan Mengumpul Hasil daripada Tugasan Async Selari dengan Cekap dalam .NET 4.5?

DDD
Lepaskan: 2025-01-13 07:16:42
asal
338 orang telah melayarinya

How Can I Efficiently Run and Collect Results from Parallel Async Tasks in .NET 4.5?

Jalankan tugas tak segerak secara selari dan kumpulkan hasil dalam .NET 4.5

Pengenalan:

Pada masa yang sama melaksanakan tugasan yang berjalan lama dan mengumpul keputusannya adalah keperluan biasa dalam aplikasi .NET. Dalam .NET 4.5, dengan pengenalan pengaturcaraan tak segerak, pendekatan berasaskan benang tradisional telah berkembang. Artikel ini meneroka cara terbaik untuk melaksanakan pelaksanaan selari tugas tak segerak dalam .NET 4.5.

Kod asal:

Kod yang disediakan menunjukkan pendekatan asas menggunakan Task.Run() untuk melancarkan dua tugasan yang berjalan lama dan kemudian menggunakan Result untuk mendapatkan semula keputusannya. Walau bagaimanapun, kaedah ini mempunyai beberapa had:

  • Tidur tidak boleh menjadi kaedah tak segerak yang boleh menunggu kaedah lain.
  • Kod ini kekok dan tidak memanfaatkan ciri bahasa baharu.
  • Penyekatan keputusan mungkin berlaku apabila menggunakan Result, yang akan menjejaskan prestasi.

Kod tidak sah:

Percubaan untuk mencipta Tugasan tidak berjalan dengan memanggil kaedah tak segerak gagal kerana kaedah tak segerak memulakan pelaksanaan serta-merta.

Penyelesaian terbaik:

Penyelesaian terbaik melibatkan penggunaan versi tak segerak bagi tugasan yang berjalan lama dan memanfaatkan kaedah Task.WhenAll(). Contohnya adalah seperti berikut:

<code class="language-csharp">async Task<int> LongTask1() { 
  // ...长时间运行的任务1...
  return 0; 
}

async Task<int> LongTask2() { 
  // ...长时间运行的任务2...
  return 1; 
}

// ...
{
   Task<int> t1 = LongTask1();
   Task<int> t2 = LongTask2();
   await Task.WhenAll(t1,t2);
   //现在我们可以访问t1.Result和t2.Result
}</code>
Salin selepas log masuk

Kod ini mencipta tugasan tak segerak untuk LongTask1 dan LongTask2 dan kemudian menunggu mereka selesai menggunakan Task.WhenAll(). Ini membolehkan tugasan dijalankan serentak tanpa menyekat. Akhirnya, keputusan boleh diakses menggunakan t1.Result dan t2.Result.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjalankan dan Mengumpul Hasil daripada Tugasan Async Selari dengan Cekap dalam .NET 4.5?. 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