我对可能性和最佳处理方式感到不知所措。我需要在Windows Azure上托管一个运行计时器的Web服务,经过一段时间后,将查询外部Web服务并处理检索到的数据并将其导入我的SQL Azure数据库。我目前正在Windows Azure上托管WCF Web服务和网站以及SQL Azure数据库。我尝试了一个辅助角色,但是只运行一次并在Run方法完成后退出,即使你添加一个计时器并以一个间隔启动计时器。最佳解决方案表示赞赏感谢。
答案 0 :(得分:2)
诀窍是工作者角色从不从“运行”方法出来。类似的东西:
public override void Run()
{
while (true)
{
Thread.Sleep(10000);
}
}
现在回答你的问题,你可以简单地在你的worker角色中实现一个Timer对象,当计时器过去时,你会调用那个外部Web服务。您可以使用以下代码实现自己的计时器:
public override void Run()
{
System.Timers.Timer timer = new System.Timers.Timer(1000);
timer.Elapsed += timer_Elapsed;
while (true)
{
Thread.Sleep(10000);
}
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Execute the code to call the web service
}
然而,对于实现计时器,我最喜欢的是Quartz库(http://quartznet.sourceforge.net/)。我发现它相当容易使用,非常灵活,而且它是开源的。
希望这有帮助。