Sobes.tech
Junior — Middle

Какви методи могат да се използват за отменяне на изпълнението на задача в системата?

sobes.tech AI

Отговор от AI

В C# обикновено механизмът CancellationToken се използва за отменяне на изпълнението на задача (Task). Основните методи за отменяне:

  1. CancellationTokenSource — създава токен за отменяне.
  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("Задачата беше отменена");
    }
}

Така, отменянето е кооперативен процес, при който задачата сама трябва да поддържа проверка на токена за отменяне.