我打算建立一個小型網站,它會輪詢第三方Web服務,比如說每15分鐘一次,將收集的數據存儲在數據庫中,並通過網頁顯示結果。如何創建一個在.net網站的後臺運行的線程?
我希望輪詢每天24小時運行,無論是否有人訪問該網站。
我知道我可以創建一個可以在服務器上運行的獨立應用程序來執行此操作,但是有沒有一種乾淨的方法可以將它合併到網站代碼中。我需要一些可以輕鬆部署在第三方託管站點上的東西。
任何在正確方向的指針都會受到歡迎。
謝謝
我打算建立一個小型網站,它會輪詢第三方Web服務,比如說每15分鐘一次,將收集的數據存儲在數據庫中,並通過網頁顯示結果。如何創建一個在.net網站的後臺運行的線程?
我希望輪詢每天24小時運行,無論是否有人訪問該網站。
我知道我可以創建一個可以在服務器上運行的獨立應用程序來執行此操作,但是有沒有一種乾淨的方法可以將它合併到網站代碼中。我需要一些可以輕鬆部署在第三方託管站點上的東西。
任何在正確方向的指針都會受到歡迎。
謝謝
將global.asax文件添加到您的網站項目。
這將爲您提供四個事件處理程序,其中一個在應用程序加載時使用。
你可以在這裏燒掉你的線程。
此外,我建議您將線程設置爲背景,以便在關閉Web應用程序時讓它們消失。
System.Threading.Thread.CurrentThread.IsBackground = true;
理想情況下,您需要創建一個Windows服務來執行此操作。從應用程序啓動創建線程的其他建議是好的,直到您的Web服務器重新啓動。
此時您的後臺任務將不會被啓動,直到下一個人訪問該網站。使用Windows服務後臺任務將在服務器啓動後立即開始運行。
使用.NET創建一個Windows服務是相當簡單的,容易肯定有很多比它之前的.NET:
http://www.codeproject.com/KB/system/WindowsService.aspx
你當然可以用得到的東西運行做傻事其他的解決辦法在服務器啓動後打到你的網站,但這很不方便,而「正確」的方式是Windows服務。
編輯:
這會教我正確讀取的問題,並沒有發現有關便宜的共享主機的工作要求。在這種情況下,另一種解決方案可能是最好的,因爲Windows服務方法幾乎肯定是不可能的。
該線程是否會受到自動web服務器管理(線程/進程回收)的影響? – Tomalak 2009-02-05 13:14:16
如果進程被回收,則在應用程序重新啓動時,線程將會觸發。 – Spence 2009-02-05 13:23:46