C# Concurrency Teil 9: Delegate Task Cancellation
Ein delegate Task repräsentiert eine CPU-bound Aufgabe die durch den Task Scheduler einem Thread zugewiesen wird. Im letzten Blog wurde gezeigt wie ein delegate Task mit TPL erstellt wird. Dieser Blog beschreibt das kontrollierte Herunterfahren von einem Task: Task Abbruch (Task Cancellation).
Der Cancellation Mechanismus
Damit der Task die Gelegenheit hat sauber herunter zu fahren wird ein Cancellation Token verwendet. Das .NET Framework benutzt dazu zwei Klassen: CancellationTokenSource und das Token selber: das CancellationToken.
Wenn der Haupt-Thread CancellationTokenSource.Cancel() aufruft wird das Flag IsCancellationRequested vom CancellationToken gesetzt. Der Task kann dann eventuelle Aufräumarbeiten machen und am Ende eine OperationCanceledException werfen. Dies ist zwingend, da sonst der Task Status nicht auf Canceled gesetzt wird und eventuelle Task Continuation Verkettungen nicht funktionieren. READ MORE