아래 코드를 사용하여 24 시간마다 웹 페이지를 호출합니다. Timer.Inlapsed 이벤트가 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는 트래픽없이 사이트를 종료합니다. –
웹 응용 프로그램 내부에서 이러한 현상이 발생합니까? 일반적으로 작업 스케줄링을 위해 웹 응용 프로그램을 사용하는 것은 좋지 않습니다. Windows 서비스 나 예정된 콘솔 앱 또는 그와 같은 것이 훨씬 더 신뢰할 수 있습니다. 웹 응용 프로그램은 웹 서버가 시작될 때, 실행되는 시간, 실행되는 시간 등에 관한 정보를 제공합니다. – David