Heim > Backend-Entwicklung > C++ > Was ist die effizienteste Möglichkeit, mehrere asynchrone Aufgaben in C# zu bearbeiten?

Was ist die effizienteste Möglichkeit, mehrere asynchrone Aufgaben in C# zu bearbeiten?

DDD
Freigeben: 2025-01-22 03:31:15
Original
277 Leute haben es durchsucht

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

Effiziente Bewältigung mehrerer asynchroner Aufgaben in C#

Beim Umgang mit asynchronen API-Clients ist es entscheidend, den effizientesten Weg zum Starten mehrerer Aufgaben und zum Synchronisieren ihrer Erledigung zu ermitteln. In diesem Artikel werden zwei gängige Techniken untersucht und eine empfohlene Alternative für maximale Leistung vorgestellt.

Gemeinsame Methoden

  1. Verwenden Sie Parallel.ForEach und .Wait():

    <code class="language-csharp"> Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());</code>
    Nach dem Login kopieren

    Dieser Ansatz führt Vorgänge parallel aus, blockiert jedoch den Thread jeder Aufgabe, bis er abgeschlossen ist. Wenn ein Netzwerkaufruf daher viel Zeit in Anspruch nimmt, bleibt der Thread im Leerlauf.

  2. Verwenden Sie Task.WaitAll:

    <code class="language-csharp"> Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());</code>
    Nach dem Login kopieren

    Dieser Code wartet auf den Abschluss aller Aufgaben und blockiert den aktuellen Thread, bis alle Vorgänge abgeschlossen sind.

Empfohlene Methode

Für eine optimale asynchrone Ausführung wird die Verwendung von Task.WhenAll:

empfohlen
<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>
Nach dem Login kopieren

Diese Methode startet Aufgaben parallel und ermöglicht es dem aktuellen Thread, weiterhin andere Aufgaben auszuführen, während er auf deren Abschluss wartet. Dadurch wird die CPU-Auslastung optimiert und die Reaktionsfähigkeit aufrechterhalten.

Für maximale Einfachheit des Codes, ohne Wartezeiten, reicht der folgende Code aus:

<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>
Nach dem Login kopieren

Durch die Verwendung von Task.WhenAll können Sie mehrere asynchrone Vorgänge effizient parallel ausführen, ohne die Thread-Effizienz oder die Reaktionsfähigkeit des Systems zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWas ist die effizienteste Möglichkeit, mehrere asynchrone Aufgaben in C# zu bearbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage