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