Sobes.tech
Junior — Middle

Milyen módszerekkel lehet törölni egy feladat végrehajtását a rendszerben?

sobes.tech MI

Válasz az MI-től

C#-ban általában a CancellationToken mechanizmust használják egy feladat (Task) végrehajtásának megszakítására. A fő megszakítási módszerek:

  1. CancellationTokenSource — létrehoz egy megszakítási tokent.
  2. A CancellationToken átadása egy feladatnak vagy aszinkron módszernek.
  3. A feladat belsejében rendszeresen ellenőrizni a token.IsCancellationRequested tulajdonságot vagy meghívni a token.ThrowIfCancellationRequested()-et.
  4. A CancellationTokenSource.Cancel() meghívásával kérjük a megszakítást.

Példa:

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

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

// Feladat megszakítása
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("A feladat megszakadt");
    }
}

Így a megszakítás egy kooperatív folyamat, ahol a feladatnak magának kell fenntartania a megszakítási token ellenőrzését.