Junior — Middle
Programı sonlandırmadan veya kod yürütme sürecini kesmeden asenkron görev Task'in yürütülmesini nasıl durdurabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
В C# для остановки выполнения асинхронного задания Task без прерывания всего процесса обычно используется механизм отмены через CancellationToken. Сам Task нельзя просто "остановить" извне, но можно передать в задачу токен отмены, который задача периодически проверяет и корректно завершает выполнение при запросе отмены.
Пример использования CancellationToken:
CancellationTokenSource cts = new CancellationTokenSource();
async Task DoWorkAsync(CancellationToken token)
{
while (!token.IsCancellationRequested)
{
// Выполнение работы
await Task.Delay(1000);
}
// Очистка или завершение
}
// Запуск задачи
var task = DoWorkAsync(cts.Token);
// Позже для отмены
cts.Cancel();
await task; // Ждем завершения
Таким образом, задача сама контролирует момент завершения, реагируя на сигнал отмены.