如何在Windows Azure工作者角色中安排任务

Hop*_*ope 8 c# azure

我有一个简单的Azure Worker角色,每天下午12点执行任务.下面是完成此任务的代码.

public override void Run()
{
    try
    {
        while (true)
        {
              int time = Convert.ToInt32(DateTime.Now.TimeOfDay);
              if (time == 12)
              {
                   DoSomethingElse();
              }
        }

    }
    catch (Exception ex)
    {
        Log.Add(ex, true);
    }            
}
Run Code Online (Sandbox Code Playgroud)

DoSomethingElse()是一种在每天中午12点发送电子邮件的方法,并且每天只会触发一次.

如何实现在12PM时执行时触发的调度程序DoSomethingElse().

我的问题是:这是(上面的代码)是最好的方法或使用任何第三方工具.

Dav*_*gon 5

这里有几个其他问题可以解决这个问题(我在上面标注了一个).话虽如此,并且有可能重复其他答案已经陈述:

在您的情况下,Windows Azure队列上的一条简单消息会延时,直到中午才会显示,可以正常工作.这也有助于处理多实例场景:如果您正在运行两个角色实例,则不希望同一个计划任务运行两次,因此您需要一种方法只让其中一个实例执行此代码.这可以通过队列消息轻松处理,或者您可以在单个实例上运行调度程序代码,方法是使用类似blob租约(可能只有一个写入锁定)作为互斥锁.@ smarx的博客文章中介绍了这一点.