Junior — Middle
Jakie metody można użyć do anulowania wykonania zadania w systemie?
sobes.tech AI
Odpowiedź od AI
W C# do anulowania wykonywania zadania (Task) zwykle używa się mechanizmu CancellationToken. Główne metody anulowania:
- CancellationTokenSource — tworzy token anulowania.
- Przekazanie CancellationToken do zadania lub metody asynchronicznej.
- Wewnątrz zadania, okresowe sprawdzanie właściwości
token.IsCancellationRequestedlub wywołanietoken.ThrowIfCancellationRequested(). - Wywołanie
CancellationTokenSource.Cancel()w celu żądania anulowania.
Przykład:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// praca
Thread.Sleep(100);
}
}, token);
// Anuluj zadanie
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Zadanie zostało anulowane");
}
}
Tak więc, anulowanie jest procesem kooperatywnym, w którym zadanie samo musi utrzymywać sprawdzanie tokena anulowania.