Junior — Middle
Kokiais metodais galima atšaukti užduoties vykdymą sistemoje?
sobes.tech AI
Atsakymas iš AI
C# kalboje dažniausiai naudojamas CancellationToken mechanizmas užduoties (Task) vykdymo atšaukimui. Pagrindiniai atšaukimo metodai:
- CancellationTokenSource — sukuria atšaukimo žetoną.
- Perduoti CancellationToken užduočiai ar asinchroninei funkcijai.
- Viduje užduoties, periodiškai tikrinti
token.IsCancellationRequestedarba iškviestitoken.ThrowIfCancellationRequested(). - Iškviesti
CancellationTokenSource.Cancel()norint prašyti atšaukimo.
Pavyzdys:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// darbas
Thread.Sleep(100);
}
}, token);
// Atšaukti užduotį
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Užduotis buvo atšaukta");
}
}
Taigi, atšaukimas yra kooperacinis procesas, kuriame užduotis pati turi palaikyti atšaukimo žetono tikrinimą.