Использование Thread.Sleep или Timer в рабочей роли Azure в .NET?
Я понимаю, что в службе Windows, лучше использоватьTimer
скорее, чемThread.Sleep(timeout)
, Тем не менее, во всех примерах кода, которые я мог найти в Интернете для работы с рабочими Azure, этоThread.Sleep(timeout)
который используется вместоTimer
.
Даже код по умолчанию, предоставленный в шаблоне проекта 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, которая приводит к этой разнице в том, как мы должны создавать такие приложения? Хорошо это или плохо использоватьTimer
в Azure рабочие?
Любое объяснение со ссылками на некоторые ресурсы, объясняющие основы этого, приветствуется, так как я до сих пор ничего не смог найти.