我希望我的 ASP.MVC 应用程序充当后台任务的调度程序。HttpApplication 子类具有以下代码:
public class MvcApplication : System.Web.HttpApplication
{
private Timer Timer;
protected void Application_Start()
{
if (Timer == null)
{
TimerCallback cb = OnTimerElapsed;
AutoResetEvent autoEvent = new AutoResetEvent(false);
Timer = new Timer(cb, autoEvent, INITIAL_DELAY, TIMER_INTERVAL);
}
}
private void OnTimerElapsed(Object stateInfo)
{
//perform background task
}
}
此外,我没有使用 System.Threading.Timer,而是将其替换为 Quartz 等效代码,但它也会在一段时间后停止触发。
所以这就引出了一个问题,Application_Start() 是正确的地方还是有更好的地方?
Timer 和 Quartz 方法都有效。但是对于 Quartz,似乎每隔 1 分钟,在 20 个间隔(20 分钟)之后,触发器不再触发。使用 Timer,我不确定触发器在多少间隔后停止触发。