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
DDDasal
2025-01-22 03:31:15283semak imbas

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>

    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>

    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>

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>

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!

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