Sobes.tech
Junior — Middle

Quali metodi possono essere usati per annullare l'esecuzione di un'attività nel sistema?

sobes.tech AI

Risposta dell'AI

In C# viene generalmente utilizzato il meccanismo CancellationToken per annullare l'esecuzione di un task. I metodi principali di cancellazione:

  1. CancellationTokenSource — crea un token di cancellazione.
  2. Passare CancellationToken a un task o a un metodo asincrono.
  3. All'interno del task, verificare periodicamente la proprietà token.IsCancellationRequested o chiamare token.ThrowIfCancellationRequested().
  4. Chiamare CancellationTokenSource.Cancel() per richiedere l'annullamento.

Esempio:

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

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

// Annulla il task
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Il task è stato annullato");
    }
}

Quindi, l'annullamento è un processo cooperativo, in cui il task stesso deve mantenere il controllo del token di cancellazione.