async espera mejores practicas

He captado el concepto de async aguardando y lo he estado usando esporádicamente, pero tengo un par de preguntas sobre las mejores prácticas.

¿está bien usar esperar en un bucle while (condición) para seguir recuperando datos que puedan estar presentes, hasta que la condición while cambie, por ejemplo? stopProcessingMessages = false.

en una aplicación como winforms, mientras que la IU se ejecuta en su subproceso, el uso de async / await en una operación como el clic de un botón es bastante trivial, pero ¿qué pasa si me gustaría aplicar de forma asíncrona en toda la aplicación de la consola, o incluso en una ventana? Servicio. ¿cuál es la mejor práctica para iniciar inicialmente esa tarea de primera espera, sería Task.Run (() => ...)?

Espero que tenga sentido en mi segunda pregunta. Quiero aprovechar al máximo Async y utilizarlo en toda su extensión, pero solo necesito entender cómo iniciar la operación asíncrona inicial antes de que caiga a todas las demás funciones asíncronas.

disculpas por no usar los bloques de código apropiados Estoy en el tren usando mi teléfono inteligente.