Heim Backend-Entwicklung C++ Task.Run vs. Async-Schlüsselwort: Wann sollte jedes für asynchrone Vorgänge verwendet werden?

Task.Run vs. Async-Schlüsselwort: Wann sollte jedes für asynchrone Vorgänge verwendet werden?

Jan 05, 2025 am 11:48 AM

Task.Run vs. Async Keyword: When to Use Each for Asynchronous Operations?

Asynchronität bei Do-Work-Methoden: Task.Run vs. Async-Schlüsselwort

Im Bereich der asynchronen Programmierung ist die Unterscheidung zwischen asynchroner Ausführung und Erwartbarkeit kann nuanciert werden. Lassen Sie uns in die Besonderheiten von Task.Run und dem Schlüsselwort async eintauchen und ihre Rollen bei der Erstellung von Methoden verstehen, die entweder synchron oder asynchron ausgeführt werden.

Asynchrone Ausführung: Task.Run

Mit der Task.Run-Methode können Sie die Ausführung von Code an einen Hintergrundthread delegieren. Durch die Erstellung eines Task-Objekts, das den Code kapselt, ermöglicht Ihnen Task.Run, den Code asynchron auszuführen, ohne den aktuellen Ausführungspfad zu blockieren. Allerdings macht die Verwendung von Task.Run eine Methode nicht unbedingt erwartbar.

Erwartungsfähigkeit: Das Async-Schlüsselwort

Eine asynchrone Methode ist eine Methode, die beim Erwarten angehalten und fortgesetzt werden kann Ausdrücke. Dadurch können Methoden Ausführungspunkte ohne Blockierung an den aufrufenden Thread zurückgeben. Eine als asynchron deklarierte Methode kann einen Task oder einen Task<T> (für einen parametrisierten Rückgabewert).

Beispiel: Ausführung ohne Async/Await

// Not async because it does not use await
private Task&lt;int&gt; DoWorkAsync()
{
  return Task.Run(() =&gt;
  {
    return 1 + 2;
  });
}
Nach dem Login kopieren

In diesem Beispiel geben wir eine Task<int> zurück. vom Task.Run-Delegaten. Allerdings wird die Methode selbst nicht als asynchron deklariert, da sie nicht „await“ verwendet.

Beispiel: Asynchrone Ausführung mit Await

private async Task&lt;int&gt; GetWebPageHtmlSizeAsync()
{
  var client = new HttpClient();
  var html = await client.GetAsync("http://www.example.com/");
  return html.Length;
}
Nach dem Login kopieren

In diesem Beispiel die Methode wird als asynchron deklariert und verwendet „await“, um die Ausführung beim HttpClient.GetAsync-Vorgang anzuhalten. Die Methode wird dem Aufrufer zurückgegeben, während die Webseite heruntergeladen wird, und wird dann fortgesetzt, wenn das Ergebnis verfügbar ist.

Best Practices:

  1. Überlegen Verwenden Sie das Schlüsselwort async, um Methoden zu erstellen, die die Ausführung anhalten und fortsetzen können.
  2. Verwenden Sie Task.Run, um Code asynchron in einem Hintergrundthread auszuführen, aber nur wenn Sie vermeiden müssen, den aktuellen Ausführungspfad zu blockieren.
  3. Vermeiden Sie es, synchrone Methoden vollständig in Task.Run einzuschließen. Synchrone Methoden sollten synchrone Signaturen haben.

Fazit:

Task.Run erleichtert die asynchrone Ausführung, indem Code an einen Hintergrundthread delegiert wird. Das Schlüsselwort async ermöglicht die Erwartbarkeit und ermöglicht es Methoden, die Ausführung anzuhalten und fortzusetzen, was die Flexibilität bietet, reaktionsfähigen und effizienten Code zu erstellen.

Das obige ist der detaillierte Inhalt vonTask.Run vs. Async-Schlüsselwort: Wann sollte jedes für asynchrone Vorgänge verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

See all articles