Sobes.tech
Junior — Middle

Ποια μέθοδοι μπορούν να χρησιμοποιηθούν για να ακυρώσετε την εκτέλεση μιας εργασίας στο σύστημα;

sobes.tech AI

Απάντηση από AI

Στην C#, για την ακύρωση της εκτέλεσης μιας εργασίας (Task), χρησιμοποιείται συνήθως ο μηχανισμός CancellationToken. Οι βασικές μέθοδοι ακύρωσης:

  1. CancellationTokenSource — δημιουργεί ένα token ακύρωσης.
  2. Μεταβίβαση του CancellationToken σε μια εργασία ή ασύγχρονη μέθοδο.
  3. Μέσα στην εργασία, περιοδικός έλεγχος της ιδιότητας token.IsCancellationRequested ή κλήση της token.ThrowIfCancellationRequested().
  4. Κλήση της CancellationTokenSource.Cancel() για αίτημα ακύρωσης.

Παράδειγμα:

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

var task = Task.Run(() => {
    for (int i = 0; i < 100; i++) {
        token.ThrowIfCancellationRequested();
        // εργασία
        Thread.Sleep(100);
    }
}, token);

// Ακύρωση της εργασίας
cts.Cancel();

try {
    task.Wait();
} catch (AggregateException ex) {
    if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
        Console.WriteLine("Η εργασία ακυρώθηκε");
    }
}

Επομένως, η ακύρωση είναι μια συνεργατική διαδικασία, όπου η εργασία πρέπει να διατηρεί τον έλεγχο του token ακύρωσης.