我使用下面的代碼每24小時調用一次網頁。據我所知,Timer.Elapsed事件應該在24小時內觸發一次。不幸的是,有些時候timer.Elapsed從不同的線程連續發射數次。誰能解釋爲什麼會發生這種情況?定時器ASP.NET多線程問題
void Application_Start(object sender, EventArgs e)
{
var timer = new System.Timers.Timer { Interval = 1 };
timer.Elapsed += delegate
{
SiAuto.Main.LogMessage("Scheduler Timer");
timer.Interval = TimeSpan.FromHours(24).TotalMilliseconds;
var webClient = new WebClient();
webClient.DownloadDataAsync(new Uri(WebHelper.GetBaseUrl + "/scheduled-task"));
};
timer.Start();
}
難道是我必須將間隔= 1的開始間隔更改爲更大的間隔= 1000? – Tomas
您確定您的網站保持24小時(或更長時間)嗎? IIS關閉沒有流量的網站。 –
這是發生在Web應用程序內部嗎?使用Web應用程序進行任務調度通常不是一個好主意。 Windows服務或預定的控制檯應用程序或類似的東西會更可靠。該網站的應用程序是在網絡服務器的憐憫之下,它的啓動時間,運行時間等。 – David