我一直在尋找關於如何正確使用C#中的計時器功能來觸發函數的示例。此處稱爲GetIntStatus()的功能基本上彙總了來自多個數據庫的數據並存儲在單獨的數據庫中。我需要在每隔2小時的時間間隔內運行此函數來刷新數據,然後將數據拉入網格中(這一部分我已經介紹了它)。有人能告訴我如何最好地處理這種情況?C#web應用程序中Timer的正確用法
回答
在WebAplication中使用Timer
的正確方法是根本不使用定時器。
替代長期運行/重複任務的方法:
- 在服務器端的計劃任務(外部進程與Windows或任何其他調度工具)。計劃重複運行的客戶端瀏覽器
- 重新請求的數據與腳本
- 平數據(假設它是打開所有的時間)
- 使用緩存和配置項目重新請求的期限。
有時在請求期間使用短暫的定時器來處理超時是沒問題的。即Task.Delay
可能會用於強制超時與其他可能長時間的任務並行運行。
不完全確定GetIntStatus()是如何實現的,但我必須做類似的事情。基本上,你只需啓動一個計時器,設置一個時間間隔,並設置一些方法,以便在間隔結束後進行調用。
這裏的語法:
System.Timers.Timer timer = new System.Timers.Timer();
timer.Start();
timer.Interval = 5 * 60 * 1000; // 5 minute updates
timer.Elapsed += (sender, args) => PerformUpdates();
在我的情況下,PefromUpdates()是返回的任務異步方法。
這不適用於Web應用程序,應用程序將被回收,並且只有當您獲得您的下一位訪問者訪問該網站時,您的計時器纔會啓動。 –
你能給我一個完整的語法嗎? –
忘記提及了,這是在自行託管的WCF服務中執行的。無可否認,這隻適用於斯科特·張伯倫提到的特定情況。 – cheft
- 1. 正確關閉Java Web應用程序
- 2. 在Web應用程序中使用靜態方法的正確方法
- 3. 移動web應用程序 - 這是正確的方法嗎?
- 4. 使用反射調用Web應用程序中的方法是否正確
- 5. 如何在Android應用程序中正確實現android.os.Handler類而不是Timer?
- 6. 如何在Angular2 web應用程序中正確使用ngFor?
- 7. 在ASP.NET Web應用程序中創建線程的正確方法
- 8. web應用程序c#
- 9. C#Web應用程序中的常量
- 10. C#應用程序中的Web ActiveX
- 11. 從C++應用程序登錄Facebook的正確方法?
- 12. SOAP響應的C#Web應用程序
- 13. 在WinForms應用程序中引用log4net DLL的正確方法
- 14. Rails 3應用程序中Bundler組的正確用法
- 15. 在Web應用程序中正確關閉Akka actor系統
- 16. log4j2在web應用程序中啓動不正確
- 17. C#中WPF應用程序中的圖像源不正確
- 18. Singleton在Java Web應用程序中讀取屬性文件;正確的做法?
- 19. 在Web應用程序中生成pdf,xls,png文件的正確方法
- 20. 在Visual Studio中設置MVC Web應用程序的正確方法?
- 21. 通過應用程序獲取已安裝的應用程序路徑的正確方法。 C#中的名稱
- 22. 打開預編譯的web應用程序的「正常」的Web應用程序
- 23. C++應用程序無法正確啓動(0xc000000d)
- 24. 應用程序無法正確啓動(0xc000007b)Visual Studio C++
- 25. 其他Web應用程序中的Web應用程序
- 26. Azure Web應用程序中的三層Web應用程序
- 27. 主Web應用程序中的IIS 7 Web應用程序
- 28. Spring MVC Web應用程序 - 正確使用Model
- 29. C++應用程序和web應用程序之間的通信
- 30. 作爲Web應用程序的C#應用程序
非平凡任務,因爲你說它需要在Web應用程序的上下文中運行。這是一個解決方案:http://hangfire.io/ – MatthewMartin
爲什麼這是在一個web應用程序?如果數據全是服務器端,那麼爲什麼不在服務器上運行一個控制檯應用程序? – PaulBinder
這不應該在Web應用程序中。這應該在Windows服務或計劃的控制檯應用程序中。 – David