首页 文章

如何创建在计时器上运行的服务来查询外部Web服务?

提问于
浏览
0

我对可能性和处理这个问题的最佳方法感到有些不知所措 . 我需要在Windows Azure上托管一个运行计时器的Web服务,经过一段时间后,将查询外部Web服务并处理检索到的数据并将其导入我的SQL Azure数据库 . 我目前正在Windows Azure上托管WCF Web服务和网站以及SQL Azure数据库 . 我尝试了一个辅助角色,但只运行一次并在Run方法完成后退出,即使你添加一个计时器并以一个间隔启动计时器 . 最佳解决方案表示赞赏谢谢 .

1 回答

  • 2

    诀窍是工作者角色 NEVER 来自"Run"方法 . 就像是:

    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/) . 我发现它相当容易使用,非常灵活,而且它是开源的 .

    希望这可以帮助 .

相关问题