2012-03-12 77 views
0

我有一個wcf服務用於運行長期存在的線程(5-10分鐘)。我將這個函數傳遞給一個新的線程,以防止終端用戶瀏覽器掛起。WCF服務,是否可以保存一個線程並在稍後恢復?

此時如果應用程序池回收,我會鬆開正在線程中完成的工作。

雖然我確定我可以在處理工作的對象中寫入一些東西,以便通過sql找到它遺留的位置。

我希望有一種方法可以讓IIS保持回收狀態,或者更好地恢復線程。

+0

你可以添加一些代碼到你的文章?這將是非常有幫助的。 – 2012-03-12 22:59:53

+0

請參閱Windows Workflow Foundation和AppFabric – 2012-03-12 23:15:06

回答

3

恐怕做background tasks in an IIS hosted ASP.NET application是一個非常糟糕的主意,因爲你已經發現了。您可能會在IIS中配置應用程序池並禁用回收功能,但這可能會對應用程序性能產生一些其他副作用,因此您可能會重新考慮將這些後臺任務移動到計劃使用Windows計劃程序運行的Windows服務或控制檯應用程序中,不必擔心AppDomain可能隨時被回收。

+0

感謝煽動的人,我決定採用不同的路線,因此即使服務重新啓動,它也可以在不管什麼時候停止。 我只是將所有需要做的工作加載到一個SQL表中,並且如果服務關閉,使用AppInitialize()來檢查表中是否有任何東西留在該表中並從中斷。 – Anthem127 2012-03-13 11:28:09

相關問題