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:
- CancellationTokenSource — crea un token de cancelación.
- Pasar CancellationToken a una tarea o método asincrónico.
- Dentro de la tarea, verificar periódicamente la propiedad
token.IsCancellationRequestedo llamar atoken.ThrowIfCancellationRequested(). - 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.