Sobes.tech
Junior — Middle

Kādiem veidiem sistēmā var atcelt uzdevuma izpildi?

sobes.tech AI

Atbilde no AI

C# valodā parasti tiek izmantots CancellationToken mehānisms uzdevuma (Task) izpildes pārtraukšanai. Galvenās pārtraukšanas metodes:

  1. CancellationTokenSource — izveido pārtraukšanas žetonu.
  2. Pārsūtīt CancellationToken uz uzdevumu vai asīnhronu metodi.
  3. iekš uzdevuma, periodiski pārbaudīt token.IsCancellationRequested īpašību vai izsaukt token.ThrowIfCancellationRequested().
  4. Izsaukt CancellationTokenSource.Cancel() lai pieprasītu pārtraukšanu.

Piemērs:

var cts = new CancellationTokenSource();
var token = cts.Token;

var task = Task.Run(() => {
    for (int i = 0; i < 100; i++) {
        token.ThrowIfCancellationRequested();
        // darbs
        Thread.Sleep(100);
    }
}, token);

// Pārtraukt uzdevumu
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Uzdevums tika pārtraukts");
    }
}

Tādējādi, pārtraukšana ir kooperatīvs process, kurā uzdevumam pašam jāuztur pārtraukšanas žetona pārbaude.