Как реализовать выход при условие=1 из Task.Delay(-1)? - C#
Формулировка задачи:
Есть асинхронный таск, который подписывается на ивент, затем идёт бесконечное ожидание.
Для наглядности примерная структура кода:
В определённой ситуации UpdateFunc() меняет значение exit на true, и дальше в таске Run() код должен пойти дальше, т.е. выполниться ex.Stop();
Конечно есть вариант сделать так:
но не будет ли это грузить систему больше и как то выглядит ненормально, как мне кажется.
Хотелось бы почитать ваши мысли по данной ситуации.
bool exit = false; async Task Run() { ex.UpdateEvent += UpdateFunc; ex.Start(); await Task.Delay(-1); ex.Stop(); }
bool exit = false; async Task Run() { ex.UpdateEvent += UpdateFunc; ex.Start(); while(exit==false) await Task.Delay(500);//частота обновления должна быть довольно таки высокая ex.Stop(); }
Решение задачи: «Как реализовать выход при условие=1 из Task.Delay(-1)?»
textual
Листинг программы
TaskCompletionSource<bool> completion; async Task Run() { completion = new TaskCompletionSource<bool>(); ex.UpdateEvent += UpdateFunc; ex.Start(); await completion.Task; ex.Stop(); } void UpdateFunc(object sender, EventArgs e) { if (пора заканчивать) completion.SetResult(true); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д