c# - 如何在 Windows Azure 辅助角色中安排任务

标签 c# azure

我正在运行一个简单的 Azure 辅助角色,每天中午 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);
    }            
}

此处 DoSomethingElse() 是一种在每天中午 12 点发送电子邮件的方法,并且每天仅触发一次。

如何实现在中午 12 点时触发并执行 DoSomethingElse() 的调度程序。

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

最佳答案

这里还有几个其他问题与此相关(我在上面标记了一个)。话虽如此,但冒着重复其他答案已经指出的风险:

就您而言,Windows Azure 队列上的一条简单消息(延迟到中午才显示)就可以了。这也有助于处理多实例场景:如果您正在运行角色的两个实例,您不希望相同的计划任务运行两次,因此您需要一种方法来仅让其中一个实例执行此代码。这可以通过队列消息轻松处理,或者您可以使用 Blob 租约(可能只有一个写锁)作为互斥锁,在单个实例上运行调度程序代码。 @smarx 的博客文章here对此进行了介绍。 .

关于c# - 如何在 Windows Azure 辅助角色中安排任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897404/

相关文章:

azure - Azure Kubernetes 服务中 PVC 的读写权限问题

azure - 您需要确保 WebApp1 使用 ASP.NET v4.7 运行时堆栈

C# - 正则表达式不匹配输入字符串

c# - WebClient DefaultCredentials 和 NetworkCredentials 之间有什么区别?

c# - PixelFormat.Format32bppArgb 似乎有错误的字节顺序

c# - 泛型类约束——我可以指定泛型类型可以序列化为 XML 吗?

wcf - 访问 Azure RoleEnvironment 时为 "Role discovery data is unavailable"

azure - Azure VM快照可以安全删除吗?

c# - while 循环中的 XmlReader IsStartElement 重复上一行

c# - 是否可以仅使用事件来检测 Azure 角色实例计数的变化?