Sobes.tech
Junior — Middle

Milliseid meetodeid saab kasutada ülesande täitmise tühistamiseks süsteemis?

sobes.tech AI

Vastus AI-lt

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

  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("Задачата беше отменена");
    }
}

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