Sobes.tech
Junior — Middle

¿Qué métodos se pueden usar para cancelar la ejecución de una tarea en el sistema?

sobes.tech AI

Respuesta de la IA

En C#, para cancelar la ejecución de una tarea (Task), generalmente se utiliza el mecanismo CancellationToken. Los métodos principales de cancelación:

  1. CancellationTokenSource — crea un token de cancelación.
  2. Pasar CancellationToken a una tarea o método asincrónico.
  3. Dentro de la tarea, verificar periódicamente la propiedad token.IsCancellationRequested o llamar a token.ThrowIfCancellationRequested().
  4. Llamar a CancellationTokenSource.Cancel() para solicitar la cancelación.

Ejemplo:

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

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

// Cancelar la tarea
cts.Cancel();

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

Por lo tanto, la cancelación es un proceso cooperativo, donde la tarea misma debe mantener la verificación del token de cancelación.