Heim > Backend-Entwicklung > C++ > Wann sollte ich „Task.Run' mit Async/Await verwenden?

Wann sollte ich „Task.Run' mit Async/Await verwenden?

DDD
Freigeben: 2025-01-03 13:42:40
Original
747 Leute haben es durchsucht

When Should I Use `Task.Run` with Async/Await?

Async/Await verstehen: Wann Task.Run verwendet werden sollte

Im Bereich der asynchronen Programmierung ist es wichtig, zwischen asynchronen Methoden ( asynchron) und asynchrone Ausführung (Hintergrund-Threading). Um in die Nuancen einzutauchen, untersuchen wir die folgenden Szenarios:

Szenario 1: Kein Hintergrund-Threading

private async Task DoWork1Async()
{
    int result = 1 + 2;
}
Nach dem Login kopieren

In diesem Beispiel ist die Methode als asynchron markiert, aber führt eine triviale Operation aus, die keine Hintergrundausführung erfordert. Daher wird das Warten auf DoWork1Async() synchron ausgeführt.

Szenario 2: Ausführung in einem Hintergrundthread

private async Task DoWork2Async()
{
    Task.Run( () =>
    {
        int result = 1 + 2;
    });
}
Nach dem Login kopieren

Hier wird die Methode erneut als asynchron markiert, aber Es umschließt den eigentlichen Vorgang in Task.Run. Dadurch wird sichergestellt, dass der Vorgang in einem Hintergrundthread ausgeführt wird. Das Warten auf DoWork2Async() wird jedoch weiterhin synchron ausgeführt, da nicht auf den Hintergrund-Thread-Vorgang gewartet wird.

Methodenrückgabetyp und Asynchronverhalten

Der Rückgabetyp von a Die Methode kann auch ihr asynchrones Verhalten beeinflussen. Methoden, die Task oder Task kann abgewartet werden. Das bedeutet, dass wir innerhalb einer asynchronen Methode „await“ verwenden können, um deren Ausführung anzuhalten und später fortzusetzen, wenn die erwartete Aufgabe abgeschlossen ist.

Task.Run für asynchrone Ausführung

Um eine Methode erwartbar zu machen und ihre Operation in einem Hintergrundthread auszuführen, wir sollten Task.Run verwenden, um einen neuen zu erstellen task. Dieser Ansatz ist angemessener als das Einschließen der gesamten Methode in Task.Run, da wir so eine klare Trennung zwischen synchronem und asynchronem Code beibehalten können.

private Task<int> DoWorkAsync() // No async because the method does not need await
{
  return Task.Run(() =>
  {
    return 1 + 2;
  });
}
Nach dem Login kopieren

Best Practices

  • Verwenden Sie Task.Run für die Thread-Ausführung im Hintergrund.
  • Vermeiden Sie das Einschließen synchroner Methoden Task.Run; Lassen Sie Verbraucher entscheiden, wie sie sie ausführen.
  • Machen Sie sich die deklarative Async/Await-Syntax zum Schreiben von asynchronem Code zunutze.
  • Weitere Einzelheiten finden Sie in der MSDN-Dokumentation zu Async.

Das obige ist der detaillierte Inhalt vonWann sollte ich „Task.Run' mit Async/Await verwenden?. 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