Junior — Middle
Koje metode možete koristiti za otkazivanje izvršenja zadatka u sistemu?
sobes.tech АИ
Одговор од АИ
U C#-u se obično koristi mehanizam CancellationToken za otkazivanje izvršavanja zadatka (Task). Glavne metode otkazivanja:
- CancellationTokenSource — kreira token za otkazivanje.
- Prosljeđivanje CancellationToken u zadatak ili asinhronu metodu.
- Unutar zadatka, periodično provjeravanje svojstva
token.IsCancellationRequestedili pozivanjetoken.ThrowIfCancellationRequested(). - Pozivanje
CancellationTokenSource.Cancel()za zahtjev za otkazivanje.
Primjer:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// rad
Thread.Sleep(100);
}
}, token);
// Otkazivanje zadatka
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Zadatak je otkazan");
}
}
Dakle, otkazivanje je kooperativni proces, gdje zadatak sam mora održavati provjeru tokena otkazivanja.