Propósito general Intentar y volver a intentar con un tiempo de espera en C #?

Estoy buscando un propósito de uso general y vuelva a intentarlo con un tiempo de espera en C #. Básicamente, quiero lo siguiente:

bool stopTrying = false;
DateTime time = DateTime.Now;
while (!stopTrying)
{
    try
    {
        //[Statement to Execute]
    }
    catch (Exception ex)
    {
        if (DateTime.Now.Subtract(time).Milliseconds > 10000)
        {
            stopTrying = true;
            throw ex;
        }
    }
}

En el caso anterior, estoy esperando 10 segundos, pero debería ser un tiempo de espera variable basado en un parámetro. No quiero tener que repetir este código completo donde sea que necesite usarlo. Hay varios lugares en mi código donde no hay un tiempo de espera incorporado en la API y llegaré a una excepción si la aplicación no está lista para que se ejecute la declaración. Esto también evitaría tener que codificar los retrasos en mi aplicación antes de estos ajustes.

Aclaración La declaración en cuestión podría ser algo así como una tarea. Si uso un delegado y un método. Invocar, ¿no está la invocación dentro del delegado y no el método original?

Respuestas a la pregunta(6)

Su respuesta a la pregunta