Как прервать задачу?
У меня есть телеграмм-бот, который принимает команду, после чего она выполняется бесконечно, пока не придет апдейт, а потом этот бесконечный цикл должен прерваться и приложение должно дальше работать(ждать команду). Я пытался сделать что-то на подобии этого:
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken ct = cts.Token;
if (message.Text == "/stop")
{
cts.Cancel();
cts.Dispose();
await client.SendTextMessageAsync(message.Chat.Id, "end");
}
await Task.Run(async () =>
{
while (true)
{
if (ct.IsCancellationRequested)
break;
await _parserWorker.Work(message, client, message.Chat.Id);
Thread.Sleep(60000);
}
Console.WriteLine("end");
},ct);
Но приложение полностью падает. Если не передавать ct в Task, то прерывание не выполняется.
Как можно завершить цикл без падения приложения?
Источник: Stack Overflow на русском