Zum Hauptinhalt springen

Einführung Multithreading mit TPL (Task Parallel Library)

Task Parallel Library

Microsoft empfiehlt die Verwendung von TPL, da es die Vorteile der Multi-Prozessor-Systeme besser ausnutzt und die Implementierung von Parallelisierung wesentlich vereinfacht. Es bietet eine höhere Abstraktionsebene als herkömmliches Multithreading, wodurch Entwickler in der Lage sind, Parallelisierung auf höherer Ebene zu implementieren. Außerdem bietet es eine bessere Skalierbarkeit und Robustheit. Daher ist TPL eine bevorzugte Methode zur Implementierung von Parallelisierung in .NET-Anwendungen.

Task-Klasse

Die Task-Klasse ist eine Klasse in C#, die zur Verwaltung von asynchronen Aufgaben verwendet wird. Mit der Task-Klasse können asynchrone Aufgaben gestartet, pausiert, fortgesetzt und abgebrochen werden. Außerdem können Tasks miteinander verknüpft und synchronisiert werden.

Konstruktoren der Task Klasse

Hier sind einige wichtige Konstruktoren der Task-Klasse als Tabelle:

KonstruktorBeschreibung
Task(Action)Erstellt einen neuen Task, der die angegebene Action ausführt.
Task(Action, CancellationToken)Erstellt einen neuen Task, der die angegebene Action ausführt und auf das Abbruch-Token achtet.
Task(Action, TaskCreationOptions)Erstellt einen neuen Task mit den angegebenen Optionen und führt die angegebene Action aus.
Task(Action, CancellationToken, TaskCreationOptions)Erstellt einen neuen Task mit den angegebenen Optionen und achtet auf das Abbruch-Token, während er die angegebene Aktion ausführt.
Task(Func<TResult>)Erstellt einen neuen Task, der die angegebene Funktion ausführt und ein Ergebnis zurückgibt.
Task(Func<TResult>, CancellationToken)Erstellt einen neuen Task, der die angegebene Funktion ausführt, auf das Abbruch-Token achtet und ein Ergebnis zurückgibt.
Task(Func<TResult>, TaskCreationOptions)Erstellt einen neuen Task mit den angegebenen Optionen und führt die angegebene Funktion aus, die ein Ergebnis zurückgibt.
Task(Func<TResult>, CancellationToken, TaskCreationOptions)Erstellt einen neuen Task mit den angegebenen Optionen und achtet auf das Abbruch-Token, während er die angegebene Funktion ausführt, die ein Ergebnis zurückgibt.

Task manuell erzeugen

Es gibt verschiedene Möglichkeiten, einen Task in C# zu erstellen.

Task task = new Task(new Action(MyMethod));
task.Start();
Task myTask = Task.Factory.StartNew(MyMethod);
Task task = Task.Run(() => {
// Hier kommt der Code für die Methode
});

Kommentare