Rumah > pembangunan bahagian belakang > C++ > Apakah Cara Paling Cekap untuk Mengendalikan Tugasan Async Berbilang dalam C#?

Apakah Cara Paling Cekap untuk Mengendalikan Tugasan Async Berbilang dalam C#?

DDD
Lepaskan: 2025-01-22 03:31:15
asal
277 orang telah melayarinya

What's the Most Efficient Way to Handle Multiple Async Tasks in C#?

Mengendalikan berbilang tugas tak segerak dalam C#

dengan cekap

Apabila berurusan dengan pelanggan API tak segerak, adalah penting untuk menentukan cara paling berkesan untuk melancarkan berbilang tugas dan menyegerakkan penyiapannya. Artikel ini akan meneroka dua teknik biasa dan memperkenalkan alternatif yang disyorkan untuk prestasi maksimum.

Kaedah biasa

  1. Gunakan Parallel.ForEach dan .Wait():

    <code class="language-csharp"> Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());</code>
    Salin selepas log masuk

    Pendekatan ini menjalankan operasi secara selari tetapi menyekat setiap urutan tugasan sehingga ia selesai. Oleh itu, jika panggilan rangkaian mengambil banyak masa, urutan akan kekal melahu.

  2. Gunakan Task.WaitAll:

    <code class="language-csharp"> Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());</code>
    Salin selepas log masuk

    Kod ini menunggu semua tugasan selesai, menyekat urutan semasa sehingga semua operasi selesai.

Kaedah yang disyorkan

Untuk pelaksanaan tak segerak yang optimum, disyorkan untuk menggunakan Task.WhenAll:

<code class="language-csharp">public async Task DoWork() {
    int[] ids = new[] { 1, 2, 3, 4, 5 };
    await Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient)));
}</code>
Salin selepas log masuk

Kaedah ini memulakan tugasan secara selari dan membenarkan urutan semasa untuk terus melaksanakan tugasan lain sementara menunggu tugasan itu selesai. Ini mengoptimumkan penggunaan CPU dan mengekalkan tindak balas.

Untuk kesederhanaan maksimum kod, tanpa menunggu, kod berikut sudah memadai:

<code class="language-csharp">public Task DoWork() {
    int[] ids = new[] { 1, 2, 3, 4, 5 };
    return Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient)));
}</code>
Salin selepas log masuk

Dengan menggunakan Task.WhenAll, anda boleh menjalankan berbilang operasi tak segerak secara selari dengan cekap tanpa mengorbankan kecekapan benang atau responsif sistem.

Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Mengendalikan Tugasan Async Berbilang dalam C#?. 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