我正在运行一个简单的 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/