Я пытаюсь реализовать функцию таймера повторения asp.net. Я не могу создать службу Windows, так как я размещаю сайт в общей среде и поэтому не имею доступа.
Я читал различные способы достижения этого, каждый со своими преимуществами / недостатками. Подход кеширования показался многообещающим, но выглядит как хак.
Я пытался реализовать httphandler, который будет запускать один объект System.Threading.Timer для циклического выполнения каждую минуту и выполнения некоторой работы Возможно добавление в очередь других рабочих элементов.
Вот что у меня есть:
public class Scheduler : IHttpHandler
{
protected static TimerCallback tcb = null;
protected static Timer timer = null;
static Scheduler()
{
tcb = new TimerCallback(DoWork);
timer = new Timer(tcb, null, TimeSpan.Zero, new TimeSpan(0, 0, 1, 0));
}
private static void DoWork(Object stateInfo)
{
}
public void ProcessRequest(HttpContext context)
{
}
public bool IsReusable
{
get { return false; }
}
}
Я прочитал здесь , что вам нужно помнить о таймере, который не удаляется при выгрузке приложения. Он подразумевает, что это только проблема, если вы вызываете нативный код, которым я не являюсь. Я не мог понять, как связать событие application_end, чтобы избавиться от таймера из обработчика.
Мой вопрос таков: вышеприведенный подход далеко от истины? Есть лучший способ сделать это? Будет ли более разумным отказаться от статических переменных и сохранить таймер в состоянии приложения?
Извините, мне нужны информированные мнения. Я чувствую, что я хожу по кругу.
Спасибо