0

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

4

1 回答 1

2

诀窍是让工人角色永远不会脱离“运行”方法。就像是:

    public override void Run()
    {
        while (true)
        {
            Thread.Sleep(10000);
        }
    }

现在谈到您的问题,您可以简单地在您的工作角色中实现一个 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/)。我发现它相当容易使用且非常灵活,而且它是开源的。

希望这可以帮助。

于 2013-01-01T11:42:15.930 回答