Heim > Backend-Entwicklung > C++ > Async/Await: Sollte ich meine Methode für Hintergrund-Threading in „Task.Run' einschließen?

Async/Await: Sollte ich meine Methode für Hintergrund-Threading in „Task.Run' einschließen?

Patricia Arquette
Freigeben: 2025-01-05 12:31:40
Original
178 Leute haben es durchsucht

Async/Await: Should I Wrap My Method in `Task.Run` for Background Threading?

Entschlüsselung von Async/Await: Methoden-Wrapper oder Hintergrund-Thread?

Auf der Suche nach dem Verständnis von Async/Await entsteht das Dilemma: Ist es notwendig, eine Methode darin zu kapseln? Task.Run, um sowohl asynchrones Verhalten als auch Hintergrund-Thread-Ausführung zu erreichen?

Asynchrone Methoden vs. Awaitable Aufgaben

„Async“ bezeichnet eine Methode, die die Kontrolle an den aufrufenden Thread übergeben kann, bevor mit der Ausführung begonnen wird. Diese Nachgabe erfolgt durch Wait-Ausdrücke. Im Gegensatz dazu bezieht sich „asynchron“ im Sinne von MSDN (ein oft irreführender Begriff) auf Code, der in einem separaten Thread ausgeführt wird.

Getrennt davon beschreibt „awaitable“ einen Typ, der mit dem Wait-Operator verwendet werden kann. Zu den häufig erwarteten Objekten gehören Task und Task.

Anpassen des Codes für die Ausführung von Hintergrundthreads

Um eine Methode in einem Hintergrundthread auszuführen und dabei die Erwartbarkeit beizubehalten, verwenden Sie Task.Run:

private Task<int> DoWorkAsync()
{
  return Task.Run(() => 1 + 2);
}
Nach dem Login kopieren

Von diesem Ansatz wird jedoch im Allgemeinen abgeraten.

Aktivieren von Asynchronous Yielding

Um eine asynchrone Methode zu erstellen, die anhalten und die Kontrolle abgeben kann, deklarieren Sie die Methode als asynchron und verwenden Sie „await“ an bestimmten Yield-Punkten:

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

Verknüpfen von asynchronem Code und Awaitables

Async-Code basiert in seinen Wait-Ausdrücken auf Awaitables. Awaitables können entweder andere asynchrone Methoden oder synchrone Methoden sein, die Waitables zurückgeben.

Methoden in Task.Run einschließen: Eine nicht empfohlene Vorgehensweise

Vermeiden Sie das willkürliche Einschließen synchroner Methoden in Task.Run. Behalten Sie stattdessen synchrone Signaturen bei und überlassen Sie die Option des Wrappings dem Verbraucher.

Zusätzliche Ressourcen für Async/Await

  • [Async/Await-Grundlagen](https://blog.stephencleary .com/2012/02/async-await-fundamentals.html)
  • [MSDN Async Dokumentation](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/)

Das obige ist der detaillierte Inhalt vonAsync/Await: Sollte ich meine Methode für Hintergrund-Threading in „Task.Run' einschließen?. 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