Sobes.tech
Junior — Middle

Welke methoden kunnen worden gebruikt om de uitvoering van een taak in het systeem te annuleren?

sobes.tech AI

Antwoord van AI

In C# wordt het mechanisme CancellationToken meestal gebruikt om de uitvoering van een taak (Task) te annuleren. De belangrijkste annuleringsmethoden:

  1. CancellationTokenSource — maakt een annulerings-token aan.
  2. Het doorgeven van CancellationToken aan een taak of asynchrone methode.
  3. Binnen de taak periodiek controleren van de eigenschap token.IsCancellationRequested of het aanroepen van token.ThrowIfCancellationRequested().
  4. Het aanroepen van CancellationTokenSource.Cancel() om het annuleren te verzoeken.

Voorbeeld:

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

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

// Annuleer de taak
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Taak is geannuleerd");
    }
}

Dus, annulering is een coöperatief proces waarbij de taak zelf de controle moet blijven houden over het controleren van de annuleringstoken.