0

У меня в начале формы инициализируются cancellationtokensource cts = new cancellationtokensource(); и cancellationtoken ct = cts.Token;

есть кнопка, останавливающая цикл, в ней я прописал cts.Cancel() . а в цикле, который находится в обработчике события второй кнопки и await Task.Run(() я прописал if(ct.IsCancellationTokenRequested){break;} но, когда я нажимаю на запустить, а затем на остановить, цикл останавливается, но если опять нажать запустить, то цикл заново не запускается

Tynett
  • 99
  • 1
  • 5
  • 2
    cancellationtokensource может отменяться только один раз, после отмены оно остаётся в таком состоянии. Вам нужно на каждый запуск задачи создавать новый cancellationtokensource. – Иван Mar 22 '22 at 04:39
  • тоесть на кнопку запустить я должен прописать еще и cancellationtokensource cts = new cancellationtokensource(); и cancellationtoken ct = cts.Token;? – Tynett Mar 22 '22 at 04:42
  • Именно. Плюс cancellationtokensource нужно в конце выполнения диспоузить и там ещё есть приколы с синхронизации потоков, но это уже другой вопрос. – Иван Mar 22 '22 at 04:48
  • в конце это после cancel()? – Tynett Mar 22 '22 at 05:00
  • https://ru.stackoverflow.com/a/1257322/373567 – aepot Mar 23 '22 at 16:30

0 Answers0