Zaplanuj zadanie w ASP.NET
Próbuję utworzyć harmonogram zadań, który działa dwa razy dziennie. Zaimplementowałem harmonogram zadań za pomocą CacheItemRemovedCallaback, jak sugerowano wten post iten blog. Mam funkcję, która umożliwia administratorowi modyfikowanie zaplanowanych godzin i zapisuje je w zmiennych aplikacji:
protected void UpdateSchedule(object sender, EventArgs e)
{
Button button = sender as Button;
if (button.ID == "scheduleButton1")
{
Application.Lock();
Application["buildSchedule1"] = GetScheduleTime1;
Application.UnLock();
}
else if (button.ID == "scheduleButton2")
{
Application.Lock();
Application["buildSchedule2"] = GetScheduleTime2;
Application.UnLock();
}
HttpRuntime.Cache.Remove(Global.DummyCachekey); //remove current scheduled task and set new time
}
I na Global.aspx mam:
protected void Application_Start(object sender, EventArgs e)
{
Application.Lock();
Application["buildSchedule1"] = new TimeSpan(10,00, 0); //default time
Application["buildSchedule2"] = new TimeSpan(16,00, 0); //default time
Application.UnLock();
SheduleTask();
};
Problem polega na tym, że z jakiegoś powodu (prawdopodobnie z powodu recyklingu puli aplikacji) czasy harmonogramu są resetowane, a nawet czasami zadanie nie uruchamia się w domyślnych czasach.
Znalazłem rozwiązania, które wspominają o usługach Windows lub harmonogramie zadań Windows, ale to nie działa dla mnie, ponieważ muszę być w stanie pozwolić administratorowi skonfigurować czasy za pośrednictwem aplikacji internetowej. (Szukam tego, ale nic nie znalazłem).