Sobes.tech
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:

  1. CancellationTokenSource — vytvorí token na zrušenie.
  2. Odovzdanie CancellationToken do úlohy alebo asynchrónnej metódy.
  3. Vo vnútri úlohy pravidelne kontrolovať vlastnosť token.IsCancellationRequested alebo volať token.ThrowIfCancellationRequested().
  4. 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.