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