Back to questions
Junior — Middle
76
Как деактивировать или отменить выполненную задачу в системе?
Answer from AI
sobes.tech AI
В C# для деактивации или отмены выполняемой задачи (Task) обычно используют механизм отмены через CancellationToken.
Основные шаги:
- Создаётся
CancellationTokenSource, который выдаётCancellationToken. - При запуске задачи передаётся этот токен.
- Внутри задачи периодически проверяется
token.IsCancellationRequestedи при необходимости выбрасываетсяOperationCanceledExceptionили задача завершается. - Для отмены вызывается
CancellationTokenSource.Cancel().
Пример:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Задача отменена");
token.ThrowIfCancellationRequested();
}
// Работа задачи
Thread.Sleep(100);
}
}, token);
// Для отмены задачи
cts.Cancel();
try
{
task.Wait();
}
catch (AggregateException ex) when (ex.InnerExceptions.Any(e => e is OperationCanceledException))
{
Console.WriteLine("Задача была отменена корректно.");
}
Важно: нельзя просто "принудительно" остановить задачу, нужно предусмотреть поддержку отмены внутри самой задачи.