


Task.Run vs. Async-Schlüsselwort: Wann sollte jedes für asynchrone Vorgänge verwendet werden?
Jan 05, 2025 am 11:48 AMAsynchronitä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<int> DoWorkAsync() { return Task.Run(() => { return 1 + 2; }); }
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<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
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:
- Überlegen Verwenden Sie das Schlüsselwort async, um Methoden zu erstellen, die die Ausführung anhalten und fortsetzen können.
- 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.
- 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

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

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

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

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

eindeutiger Gebrauch und Phrasenfreigabe

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