Я создал Scheduler
класс, который вызывает статический метод MailBot.Start
, когда приложение ASP.NET запущено.Я подозреваю, что код не является потокобезопасным, потому что некоторые переменные (возможно, не уверены в этом) в методе MailBot.Start
смешаны.Это правда?Я хотел бы иметь только один метод running
для всего приложения ASP.NET.
void Application_Start(object sender, EventArgs e)
{
WebHelper.Scheduler(TimeSpan.FromMinutes(2), TimeSpan.FromMinutes(10), MailBot.Start);
}
public static class MailBot
{
public static void Start()
{
//The actual code...
}
}
public delegate void SchedulerEvent();
public static void Scheduler(TimeSpan firstTime, TimeSpan interval, SchedulerEvent callback)
{
var timer = new System.Timers.Timer { Interval = firstTime.TotalMilliseconds };
timer.Elapsed += delegate
{
timer.Enabled = false;
try
{
timer.Interval = interval.TotalMilliseconds;
callback();
}
finally
{
timer.Enabled = true;
}
};
timer.Start();
}