今天第一次在博客園發帖,以前一直在潛水,在這裡也是學了不少東西。感謝各位園友廢話不多說,這也是我工作中遇到的問題:protected void Application_Start(object sender, EventArgs e) { // 創建一個計時器,單...
今天第一次在博客園發帖,以前一直在潛水,在這裡也是學了不少東西。感謝各位園友
廢話不多說,這也是我工作中遇到的問題:
protected void Application_Start(object sender, EventArgs e) { // 創建一個計時器,單位:毫秒 System.Timers.Timer myTimer = new System.Timers.Timer(60*60*1000); //設置時間為5秒,便於測試(單位毫秒) myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed); myTimer.Enabled = true; myTimer.AutoReset = true; } //計時器方法 protected void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e) { //可以設置時間點執行 if (DateTime.Now.Hour != 1) { return; } }
在Global.asax文件中創建了定時器,時間設置在晚上一點執行方法,測試的時候將時間改為5秒是正常運行沒問題的,正式使用的時候確沒見到效果,後來發現是方法根本沒有執行
通過網上查找資料發現是iis的進程回收機制導致,當程式閑置時間超過20分鐘(iis預設是20分鐘),進程將會被回收,這樣方法就不會執行了,解決辦法暫時有兩個,一、iis配置,打開發佈在iis上的網站應用池,查看屬性,修改閑置超時(一般改為1440)這樣就可以了,二、在伺服器上掛一個該網站的頁面,加一段定時刷新的js(一般20分鐘),這樣不讓網站閑置也可以解決進程回收的問題