Junior — Middle
Jakými metodami lze zrušit provádění úlohy v systému?
sobes.tech AI
Odpověď od AI
V jazyce C# se obvykle k ukončení vykonávání úlohy (Task) používá mechanismus CancellationToken. Hlavní metody ukončení:
- CancellationTokenSource — vytvoří token pro zrušení.
- Předání CancellationToken do úlohy nebo asynchronní metody.
- Uvnitř úlohy pravidelně kontrolovat vlastnost
token.IsCancellationRequestednebo volattoken.ThrowIfCancellationRequested(). - Volat
CancellationTokenSource.Cancel()pro požadavek na zrušení.
Příklad:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// práce
Thread.Sleep(100);
}
}, token);
// Zrušení úlohy
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Úloha byla zrušena");
}
}
Tímto způsobem je zrušení kooperativní proces, kde sama úloha musí udržovat kontrolu nad tokenem zrušení.