Junior — Middle
Ce metode pot fi folosite pentru a anula executarea unei sarcini în sistem?
sobes.tech AI
Răspuns de la AI
În C#, pentru a anula executarea unei sarcini (Task), se utilizează de obicei mecanismul CancellationToken. Metodele principale de anulare:
- CancellationTokenSource — creează un token de anulare.
- Transmiterea CancellationToken către o sarcină sau metodă asincronă.
- În interiorul sarcinii, verificarea periodică a proprietății
token.IsCancellationRequestedsau apelareatoken.ThrowIfCancellationRequested(). - Apelarea
CancellationTokenSource.Cancel()pentru a solicita anularea.
Exemplu:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// lucru
Thread.Sleep(100);
}
}, token);
// Anulare sarcină
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Sarcina a fost anulată");
}
}
Prin urmare, anularea este un proces cooperativ, în care sarcina trebuie să mențină verificarea token-ului de anulare.