Sobes.tech
Junior — Middle

Jakie metody można użyć do anulowania wykonania zadania w systemie?

sobes.tech AI

Odpowiedź od AI

W C# do anulowania wykonywania zadania (Task) zwykle używa się mechanizmu CancellationToken. Główne metody anulowania:

  1. CancellationTokenSource — tworzy token anulowania.
  2. Przekazanie CancellationToken do zadania lub metody asynchronicznej.
  3. Wewnątrz zadania, okresowe sprawdzanie właściwości token.IsCancellationRequested lub wywołanie token.ThrowIfCancellationRequested().
  4. Wywołanie CancellationTokenSource.Cancel() w celu żądania anulowania.

Przykład:

var cts = new CancellationTokenSource();
var token = cts.Token;

var task = Task.Run(() => {
    for (int i = 0; i < 100; i++) {
        token.ThrowIfCancellationRequested();
        // praca
        Thread.Sleep(100);
    }
}, token);

// Anuluj zadanie
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Zadanie zostało anulowane");
    }
}

Tak więc, anulowanie jest procesem kooperatywnym, w którym zadanie samo musi utrzymywać sprawdzanie tokena anulowania.