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:
- CancellationTokenSource — crea un token di cancellazione.
- Passare CancellationToken a un task o a un metodo asincrono.
- All'interno del task, verificare periodicamente la proprietà
token.IsCancellationRequestedo chiamaretoken.ThrowIfCancellationRequested(). - 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.