Искам моето 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 минути), спусъкът вече не се задейства. При таймера не съм сигурен след колко интервала спусъкът спира да стреля.