Usando Thread.Sleep ou Timer na função de trabalhador do Azure no .NET?

Entendo que, em um serviço do Windows, é melhor usarTimer ao invés deThread.Sleep(timeout). No entanto, em todos os exemplos de código que eu pude encontrar na Internet que estavam lidando com trabalhadores do Azure, éThread.Sleep(timeout) que é usado em vez deTimer.

Mesmo o código padrão fornecido no modelo de projeto Worker no Visual Studio usa umThread.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");
        }
    }
// ...
}

Até agora, eu também tenho usadoThread.Sleep nos meus trabalhadores, mas sem realmente entender o porquê. Então, minha pergunta é: por que usarThread.Sleep(timeout) na função de trabalhador do Azure em vez deTimer? Qual é a diferença entre o serviço Windows e o trabalhador do Azure que leva a essa diferença em como devemos conceber esse tipo de aplicativo? É bom ou ruim usarTimer nos trabalhadores do Azure?

Qualquer explicação com links para alguns recursos que explicam os fundamentos disso é bem-vinda, pois não consegui encontrar nada até agor

questionAnswers(4)

yourAnswerToTheQuestion