Как прервать задачу?

Рейтинг: 1Ответов: 0Опубликовано: 11.02.2023

У меня есть телеграмм-бот, который принимает команду, после чего она выполняется бесконечно, пока не придет апдейт, а потом этот бесконечный цикл должен прерваться и приложение должно дальше работать(ждать команду). Я пытался сделать что-то на подобии этого:

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, то прерывание не выполняется.

Как можно завершить цикл без падения приложения?

Ответы

Ответов пока нет.