El mejor método asincrónico mientras

Necesito escribir algún código asíncrono que esencialmente intente hablar repetidamente e inicializar una base de datos. Muy a menudo, el primer intento fallará, por lo tanto, el requisito es que vuelva a intentarlo.

En días pasados ​​habría utilizado un patrón similar a:

void WaitForItToWork()
{
    bool succeeded = false;
    while (!succeeded)
    {
        // do work
        succeeded = outcome; // if it worked, mark as succeeded, else retry
        Threading.Thread.Sleep(1000); // arbitrary sleep
    }
}

Me he dado cuenta de que recientemente se han realizado muchos cambios en .NET con respecto a los patrones asíncronos, por lo que mi pregunta es si este es el mejor método para usar o si vale la pena explorar elasync cosas y si es así, ¿cómo puedo implementar este patrón enasync?

Actualizar

Solo para aclarar, quiero generar este trabajo de forma asíncrona para que el método que lo genera no tenga que esperar a que termine, ya que se generará en el constructor de un servicio, por lo que el constructor debe regresar al instante.

Respuestas a la pregunta(4)

Su respuesta a la pregunta