Как правильно завершить работу Task? - C#
Формулировка задачи:
Создал такой класс:
В методе StartWork() находится такой код:
Я останавливаю итерацию в этом потоке с задержкой путем присваивания свойству IsWork false. Поле allTasksCompleted ввел для проверки точно ли завершился поток или нет.
PageObjectBot управляется WPF приложением, а внутри цикла находится код сторонних разработчиков выполняемый асинхронно. Если мой пользователь закроет UI то текущая итерация будит выполняться до конца.
Поверхностное гугление дало мне понять что такой способ остановки потока в принципе адекватный но что если я хочу при закрытии UI быть уверенным что итерация тоже прервется в тот же момент? Мне нужно проверять на IsWork перед каждой инструкцией или нужно разбить код итерации на более мелкие куски.
Вообщем помогите с рефакторингом.
public async void StartWork() { allTasksCompleted = false; await Task.Run(() => { // Какой-то код... while (IsWork) { // Какой-то код... // Какой-то код... // Какой-то код... Task.Delay(5000).Wait(); } }); allTasksCompleted = true; }
Решение задачи: «Как правильно завершить работу Task?»
textual
Листинг программы
if (token.IsCancellationRequested) return;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д