2010-12-13 118 views
0

線程將在每個Application_Start事件上啓動。asp.net是否可以關閉應用程序創建的線程?

這將是一個監控線程,應該不斷運行。

因此,即使應用程序關閉,一旦重新啓動該線程將開始太確保它運行所有的時間。

但是,我需要確保該線程不會停止/關閉,而應用程序是運行

所以幾句話,沒有任何人知道,如果asp.net可以關閉這樣一個線程沒有actualy停止/重新啓動應用程序。

回答

4

作爲設計的問題,你不應該依賴於asp.net來運行這樣的線程。應用程序回收等小事可能會造成很多麻煩。

相反,創建一個windows服務來執行該線程。這樣你就不必擔心它。

更新
我只是想補充一點信息。

IIS有能力跨多個線程和進程執行您的應用程序。一個標準的站點安裝通常只有一個進程(aka:web garden),它分配了大約20個線程來處理請求處理。

但是,任何IIS管理員都可以輕鬆地將更多進程添加到組合中。他們通常會這樣做,因爲請求處理時間過長或處理程序線程數量不足,或者作爲一種臨時措施,如果應用程序具有足夠的問題以致單個線程將軟管整個進程過程相當頻繁。

如果您有關於應用開始被旋轉的線程,那麼它會創建一個每個工作進程的網站有。這對您或您的繼任者來說可能是意想不到的行爲。

另外,監視應用程序幾乎總是完全獨立於它們正在監視的應用程序。主要原因之一是,如果受監視的進程死亡,掛起或以其他方式變得無響應,那麼監視應用程序本身仍然需要繼續並記錄此信息。否則,受監控的流程可能會很好地監控應用程序本身。

因此,請幫助自己一個忙,並將其轉移到自己的過程中。在IIS服務器上執行此操作的最佳方法是創建一個Windows服務併爲其提供適當的執行權限以執行所需的操作。

相關問題