Sobes.tech
Junior — Middle

Ce metode pot fi folosite pentru a anula executarea unei sarcini în sistem?

sobes.tech AI

Răspuns de la AI

În C#, pentru a anula executarea unei sarcini (Task), se utilizează de obicei mecanismul CancellationToken. Metodele principale de anulare:

  1. CancellationTokenSource — creează un token de anulare.
  2. Transmiterea CancellationToken către o sarcină sau metodă asincronă.
  3. În interiorul sarcinii, verificarea periodică a proprietății token.IsCancellationRequested sau apelarea token.ThrowIfCancellationRequested().
  4. Apelarea CancellationTokenSource.Cancel() pentru a solicita anularea.

Exemplu:

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

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

// Anulare sarcină
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Sarcina a fost anulată");
    }
}

Prin urmare, anularea este un proces cooperativ, în care sarcina trebuie să mențină verificarea token-ului de anulare.