重複
這是一個密切重複的Dealing with a longer running process in WCF。請考慮發佈您的答案,而不是這個。ASP.NET + WCF下的長時間運行線程程序
原始的問題
我執行必須在預定的時間運行一些後臺進程的應用程序的業務層。業務層由幾個WCF服務組成,它們都運行在同一個Web應用程序下。
這個想法是定義一組必須在不同時間運行(如每5分鐘,每天23:00等)的一組'任務'。這並不難作爲一個Windows服務來實現,但問題是,這些任務需要訪問服務中的數據緩存,所以這個「調度程序」必須在IIS上下文中運行才能訪問這些數據。
我目前正在做的是在其中一個WCF服務中使用自定義的ServiceHostFactory,它產生一個子線程並返回。子線程每隔X分鐘休眠並喚醒一次,以查看是否有計劃任務並執行它們。 但是我擔心IIS會在回收應用程序池或一段非活動時間後(例如,在任何監聽來自表示層的請求的WCF服務上沒有活動)而隨機殺死我的線程。無論服務的活動如何,線程都必須不間斷地運行。這真的有可能嗎?
我發現an article by someone doing the same thing,但他的解決方案似乎是定期從子線程本身ping服務器。希望有更好的解決方案。
這是一個非常接近的副本http://stackoverflow.com/questions/1142698/dealing-with-a-longer-running-process-in-wcf。請看看它,看看你是否同意我的看法。 – 2009-07-18 03:48:33