Async ждут лучших практик

Я понял концепцию асинхронного ожидания и использовал ее время от времени, но у меня есть пара вопросов относительно лучших практик.

можно ли использовать await в цикле while (условия) для продолжения выборки данных, которые могут присутствовать, до тех пор, пока не изменится условие while, например, stopProcessingMessages = false.

в приложении, таком как winforms, в то время как пользовательский интерфейс работает в своем потоке, использование async / await для такой операции, как нажатие кнопки, довольно тривиально, но что если я хочу применить асинхронно во всем консольном приложении или даже в Windows оказание услуг. Какова наилучшая практика для первоначального запуска этой первой задачи ожидания, это будет Task.Run (() => ...)?

Я надеюсь, что у меня есть смысл в моем втором вопросе. Я хочу максимально использовать асинхронность и использовать ее в полной мере, но мне просто нужно понять, как запустить начальную асинхронную операцию, прежде чем она перейдет ко всем другим асинхронным функциям.

извиняюсь за то, что не использовал надлежащие блоки кода. Я нахожусь в поезде, используя свой смартфон.