Heim >Backend-Entwicklung >C++ >Task.Run() vs. Task.Factory.StartNew(): Wann sollten Sie welche verwenden?

Task.Run() vs. Task.Factory.StartNew(): Wann sollten Sie welche verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-12 08:58:41667Durchsuche

Task.Run() vs. Task.Factory.StartNew(): When Should You Use Which?

Asynchrone .NET-Programmierung: Vergleich von Task.Run() und Task.Factory.StartNew()

Bei der asynchronen .NET-Programmierung ist es oft notwendig, neue Aufgaben zu erstellen und zu starten. Zu diesem Zweck stellt das .NET Framework zwei häufig verwendete Methoden zur Verfügung: Task.Run() und Task.Factory.StartNew(). Obwohl beide das gleiche grundlegende Ziel erreichen, unterscheiden sich ihre Funktionalität und Anwendungsfälle.

Task.Factory.StartNew()

Task.Factory.StartNew()Mehr Funktionen und mehrere Optionen zum Anpassen des Verhaltens neuer Aufgaben. Zu den wichtigsten akzeptierten Parametern gehören:

  • Aktion/Funktion:Delegieren Sie die Ausführung in einer neuen Aufgabe.
  • CancellationToken: Ein Abbruchtoken, mit dem die Aufgabe abgebrochen werden kann.
  • TaskCreationOptions: Eine Reihe von Optionen, die das Verhalten einer Aufgabe steuern, z. B. ihre Erstellungsoptionen und ihren Zeitplaner.
  • TaskScheduler: Der Planer, der die Aufgabe ausführt.

Diese Flexibilität ermöglicht es Ihnen, Aufgaben an Ihre spezifischen Bedürfnisse anzupassen, z. B. das Erstellen lang laufender Aufgaben oder das Ausführen von Aufgaben in bestimmten Threads.

Task.Run()

Task.Run() ist eine vereinfachte Version von Task.Factory.StartNew(), die in .NET 4.5 eingeführt wurde. Es bietet eine Standardkonfiguration für neue Aufgaben mit den folgenden Einstellungen:

  • CancellationToken.None: Verwendet kein Stornierungstoken.
  • TaskCreationOptions.DenyChildAttach: Von neuen Aufgaben erstellte Unteraufgaben können nicht an die ursprüngliche Aufgabe angehängt werden.
  • TaskScheduler.Default: Die Aufgabe wird im Standard-Aufgabenplaner ausgeführt, normalerweise unter Verwendung eines Thread-Pools.

ist eine praktische Wahl, wenn Sie keine besonderen Anpassungen benötigen und einfach die Standardeinstellungen verwenden, um schnell eine neue Aufgabe zu starten. Task.Run()

Wann sollte Task.Run() vs. Task.Factory.StartNew() verwendet werden

Im Allgemeinen verwenden Sie

, wenn Sie das Verhalten einer neuen Aufgabe anpassen müssen. Dazu gehören die folgenden Szenarien: Task.Factory.StartNew()

    Erstellen Sie Aufgaben mit langer Laufzeit
  • Geben Sie eine spezifische Stornierungsrichtlinie an
  • Aufgaben in einem bestimmten Thread oder Thread-Pool ausführen
Verwenden Sie

, wenn Sie keine Anpassung benötigen, und erstellen Sie einfach eine neue Aufgabe mit Standardeinstellungen. Task.Run() ist eine Verknüpfung, die die Aufgabenerstellung ohne zusätzliche Konfiguration vereinfacht. Task.Run()

Das obige ist der detaillierte Inhalt vonTask.Run() vs. Task.Factory.StartNew(): Wann sollten Sie welche verwenden?. 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