I understand that in a Windows service, it is better to use Timer
rather than Thread.Sleep(timeout)
. However, in all code examples I could find on the Internet that were handling Azure workers, it is Thread.Sleep(timeout)
which is used instead of Timer
.
Even the default code provided in the Worker project template in Visual Studio uses a 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");
}
}
// ...
}
So far, I've been also using Thread.Sleep
in my workers but without really understanding why. So my question is, why using Thread.Sleep(timeout)
in Azure worker role rather than Timer
? What is the difference between Windows service and Azure worker that leads to this difference in how we are supposed to conceive this kind of application? Is it good or bad to use Timer
in Azure workers?
Any explanation with links to some resources explaining the fundamentals of this is welcome as I couldn't find anything so far.