Utilizando Thread.Sleep o Timer en el rol de trabajador de Azure en .NET?

Entiendo que en un servicio de Windows, es mejor usarTimer más bien queThread.Sleep(timeout). Sin embargo, en todos los ejemplos de código que pude encontrar en Internet que manejaban trabajadores de Azure, esThread.Sleep(timeout) que se usa en lugar deTimer.

Incluso el código predeterminado proporcionado en la plantilla del proyecto Worker en Visual Studio usa unThread.Sleep:

public class WorkerRole : RoleEntryPoint
{
    public override void Run()
    {
        // This is a sample worker implementation. Replace with your logic.
        Trace.WriteLine("$projectname$ entry point called", "Information");

        while (true)
        {
            Thread.Sleep(10000);
            Trace.WriteLine("Working", "Information");
        }
    }
// ...
}

Hasta ahora, también he estado usandoThread.Sleep en mis trabajadores pero sin entender realmente por qué. Entonces mi pregunta es, ¿por qué usarThread.Sleep(timeout) en el rol de trabajador de Azure en lugar deTimer? ¿Cuál es la diferencia entre el servicio de Windows y el trabajador de Azure que conduce a esta diferencia en cómo se supone que concebimos este tipo de aplicación? ¿Es bueno o malo usarTimer en los trabajadores de Azure?

Cualquier explicación con enlaces a algunos recursos que expliquen los fundamentos de esto es bienvenida ya que no pude encontrar nada hasta ahora.

Respuestas a la pregunta(4)

Su respuesta a la pregunta