Использую Thread.Sleep или Timer в рабочей роли Azure в .NET?

Я понимаю, что в службе Windows лучше использовать Таймер, а не Thread.Sleep(время ожидания). Однако во всех примерах кода, которые я смог найти в Интернете и которые обрабатывали рабочие процессы Azure, вместо Timer используется Thread.Sleep(timeout).

Даже код по умолчанию, представленный в шаблоне проекта Worker в Visual Studio, использует Thread.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");
        }
    }
// ...
}

До сих пор я также использовал Thread.Sleep в мои рабочие, но не совсем понимая, почему. Итак, мой вопрос: зачем использовать Thread.Sleep(timeout) в рабочей роли Azure, а не Timer? В чем разница между службой Windows и работником Azure, которая приводит к этой разнице в том, как мы должны воспринимать такого рода приложения? Хорошо или плохо использовать Таймер в рабочих процессах Azure?

Любое объяснение со ссылками на некоторые ресурсы, объясняющие основы этого, приветствуется, поскольку я пока ничего не нашел.

9
задан Guillaume 6 March 2012 в 03:42
поделиться