Heim >Backend-Entwicklung >C++ >Async/Await in C#: Aufgabe direkt zurückgeben oder warten?

Async/Await in C#: Aufgabe direkt zurückgeben oder warten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-04 05:29:39266Durchsuche

Async/Await in C#: Return Task Directly or Await?

Konsequenzen der Rückkehr vs. Warten am Ende einer asynchronen Methode

In einer asynchronen Methode, die eine Aufgabe zurückgibt, haben Sie zwei Möglichkeiten zur Bearbeitung nachfolgender asynchroner Aufrufe:

Option A: Aufgabe zurückgeben Direkt

Task FooAsync()
{
    return BazAsync();
}

Option B: Auf die Aufgabe warten und zurückkehren

async Task BarAsync()
{
    await BazAsync();
}

Konsequenzen von Option A (Direkt zurückkehren)

  • Vorteil: Erfordert weniger Boilerplate Code und erstellt eine Aufgabe weniger.
  • Nachteil:Ausnahmen, die innerhalb der synchronen Methode ausgelöst werden, werden synchron zugestellt.

Diese Option ist geeignet, wenn Ihre Methode Folgendes ausführt: kleiner synchroner Arbeitsaufwand und ruft dann eine einzelne asynchrone Methode auf.

Konsequenzen von Option B (Warten und Zurückkehren)

  • Vorteil: Ausnahmen werden asynchron behandelt.
  • Nachteil: Ausführlicherer Code und erstellt eine zusätzliche Aufgabe.

Diese Option ist vorzuziehen wenn:

  • Ihre Methode muss nach dem Aufruf von BazAsync() zusätzliche asynchrone Vorgänge ausführen.
  • Sie möchten in der asynchronen Methode ausgelöste Ausnahmen asynchron behandeln.

Hinweis: Sie können eine Aufgabe nicht direkt zurückgeben, wenn die Methode selbst als asynchron deklariert ist. Dies würde zu einem Rückgabetyp Task führen, der nicht zulässig ist.

Zusammenfassend hängt die Entscheidung zwischen direkter Rückgabe oder Warten von den spezifischen Anforderungen Ihrer Methode ab. Berücksichtigen Sie bei dieser Auswahl die Codestruktur, das Potenzial für Ausnahmen und das gewünschte Verhalten Ihrer Anwendung.

Das obige ist der detaillierte Inhalt vonAsync/Await in C#: Aufgabe direkt zurückgeben oder warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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