Junior — Middle
Akými metódami je možné zrušiť vykonávanie úlohy v systéme?
sobes.tech AI
Odpoveď od AI
V jazyku C# sa zvyčajne používa mechanizmus CancellationToken na zrušenie vykonávania úlohy (Task). Hlavné metódy zrušenia:
- CancellationTokenSource — vytvorí token na zrušenie.
- Odovzdanie CancellationToken do úlohy alebo asynchrónnej metódy.
- Vo vnútri úlohy pravidelne kontrolovať vlastnosť
token.IsCancellationRequestedalebo volaťtoken.ThrowIfCancellationRequested(). - Zavolať
CancellationTokenSource.Cancel()na požiadanie o zrušenie.
Príklad:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// práca
Thread.Sleep(100);
}
}, token);
// Zrušiť úlohu
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Úloha bola zrušená");
}
}
Takže, zrušenie je kooperatívny proces, kde úloha sama musí udržiavať kontrolu nad tokenom zrušenia.