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:
- CancellationTokenSource — maakt een annulerings-token aan.
- Het doorgeven van CancellationToken aan een taak of asynchrone methode.
- Binnen de taak periodiek controleren van de eigenschap
token.IsCancellationRequestedof het aanroepen vantoken.ThrowIfCancellationRequested(). - 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.