Sobes.tech
Junior — Middle

Quais métodos podem ser usados para cancelar a execução de uma tarefa no sistema?

sobes.tech IA

Resposta da IA

Em C#, para cancelar a execução de uma tarefa (Task), geralmente utiliza-se o mecanismo CancellationToken. Os principais métodos de cancelamento:

  1. CancellationTokenSource — cria um token de cancelamento.
  2. Passar CancellationToken para uma tarefa ou método assíncrono.
  3. Dentro da tarefa, verificar periodicamente a propriedade token.IsCancellationRequested ou chamar token.ThrowIfCancellationRequested().
  4. Chamar CancellationTokenSource.Cancel() para solicitar o cancelamento.

Exemplo:

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

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

// Cancelar a tarefa
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("A tarefa foi cancelada");
    }
}

Assim, o cancelamento é um processo cooperativo, onde a tarefa deve manter a verificação do token de cancelamento.