Heim > Backend-Entwicklung > C++ > Wie kann man mehrere asynchrone Aufgaben in C# effizient ausführen?

Wie kann man mehrere asynchrone Aufgaben in C# effizient ausführen?

Linda Hamilton
Freigeben: 2025-01-22 03:17:09
Original
405 Leute haben es durchsucht

How to Efficiently Execute Multiple Asynchronous Tasks in C#?

Mehrere asynchrone Aufgaben in C# effizient ausführen

Beim Umgang mit asynchronem Code ist es entscheidend, die effizienteste Methode zur gleichzeitigen Ausführung mehrerer Aufgaben zu wählen. In diesem Artikel werden zwei gängige Methoden untersucht, um dies zu erreichen: Parallel.ForEach kombiniert mit Wait() und Task.WaitAll().

Verwenden Sie Parallel.ForEach und Wait()

Parallel.ForEach() kombiniert mit Wait() kann mehrere Aufgaben parallel starten, blockiert jedoch jeden teilnehmenden Thread, bis die Aufgabe abgeschlossen ist. Dieser Ansatz ist ineffizient, wenn Netzwerkvorgänge viel Zeit in Anspruch nehmen, da jeder Thread lange Zeit im Leerlauf ist.

Verwenden Sie Task.WaitAll()

Task.WaitAll() blockiert außerdem den aktuellen Thread, bis alle Aufgaben abgeschlossen sind. Während diese Methode sicherstellt, dass alle Aufgaben abgeschlossen sind, bevor fortgefahren wird, verhindert sie, dass der aktuelle Thread andere Arbeiten ausführt.

Empfohlene Methode: Task.WhenAll()

Um mehrere asynchrone Aufgaben effizient auszuführen, wird die Verwendung von Task.WhenAll() empfohlen. Diese Methode startet Aufgaben gleichzeitig, ohne Threads zu blockieren. Wenn Aufgaben abgeschlossen sind, warten sie automatisch, sodass der aktuelle Thread mit der Verarbeitung fortfahren kann.

Das Folgende ist ein Beispiel für die Verwendung von 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>
Nach dem Login kopieren

Durch die Verwendung von Task.WhenAll() führt die obige Methode alle Aufgaben asynchron aus, ohne den aktuellen Thread zu blockieren. Um die Leistung weiter zu optimieren, können Sie, wenn keine nachfolgenden Vorgänge vorhanden sind, die Verwendung von await vermeiden und direkt von der Methode zurückkehren.

Weitere Ressourcen

Weitere Informationen zu diesen Alternativen finden Sie im folgenden Blogbeitrag:

  • Wie und wo man die ASP.NET-Web-API für gleichzeitige asynchrone E/A verwendet

Das obige ist der detaillierte Inhalt vonWie kann man mehrere asynchrone Aufgaben in C# effizient ausführen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage