Sobes.tech
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í:

  1. CancellationTokenSource — vytvoří token pro zrušení.
  2. Předání CancellationToken do úlohy nebo asynchronní metody.
  3. Uvnitř úlohy pravidelně kontrolovat vlastnost token.IsCancellationRequested nebo volat token.ThrowIfCancellationRequested().
  4. 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í.