Junior — Middle
Ποια μέθοδοι μπορούν να χρησιμοποιηθούν για να ακυρώσετε την εκτέλεση μιας εργασίας στο σύστημα;
sobes.tech AI
Απάντηση από AI
Στην C#, για την ακύρωση της εκτέλεσης μιας εργασίας (Task), χρησιμοποιείται συνήθως ο μηχανισμός CancellationToken. Οι βασικές μέθοδοι ακύρωσης:
- CancellationTokenSource — δημιουργεί ένα token ακύρωσης.
- Μεταβίβαση του CancellationToken σε μια εργασία ή ασύγχρονη μέθοδο.
- Μέσα στην εργασία, περιοδικός έλεγχος της ιδιότητας
token.IsCancellationRequestedή κλήση τηςtoken.ThrowIfCancellationRequested(). - Κλήση της
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 ακύρωσης.