【发布时间】:2012-06-05 12:34:44
【问题描述】:
我有一个简单的 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);
}
}
这里DoSomethingElse()是一种在每天中午12点发送电子邮件的方法,并且每天只触发一次。
我怎样才能实现一个调度程序,在时间是 12 点时触发并执行DoSomethingElse()。
我的问题是:这(上面的代码)是最好的方法还是使用任何第 3 方工具。
【问题讨论】:
-
附带说明,您上面的代码将导致紧密循环,使 CPU 始终以 100% 的速度运行,并可能导致 Azure 重新启动您的辅助角色。您至少需要在其中放置一个睡眠声明。或者使用计时器等待。但是,无论如何,由于多实例,您需要寻找其他调度的答案,例如 Makogon 所说的。