2009-08-06 52 views
1

好的,所以我有一個web服務中的Call1,它將啓動一個免費的工作線程開始做一些處理,但想要通過一個監視原始工作線程的另一個調用(Call2)參考?在WebService上下文中的後臺工作線程

有關如何做到這一點的任何建議?我真的很想遠離WinService來完成我的處理。因爲我需要它更實時。

+0

我不確定我明白你的意思是Call2「監視」線程。你的意思是讓Call2查看與線程正在執行的任務相關的一些進度狀態並向調用者報告? – AnthonyWJones 2009-08-06 08:46:00

+0

葉氏這是我需要的。我想我已經找到了答案在這裏... http://stackoverflow.com/questions/228775/net-web-service-backgroundworker-threads – 2009-08-06 08:48:36

+0

這將工作,但沒有配置一個很好的機制來檢查來自Call2的線程。 。 – 2009-08-06 08:49:13

回答

2

我不明白爲什麼使用服務應用程序應該是一個問題。服務始終運行,並且可以實時監控它們。

但是,如果你真的不想這樣,那麼還有其他選擇。可以使用ThreadPool或手動啓動一個新線程來啓動一個新線程,並且該線程將運行在運行Web服務的應用程序池的後臺。

您可能想爲此使用任務調度程序庫。請查看Quartz.net

請注意,如果IIS決定需要,您的Web服務運行的應用程序域可能隨時被殺死,因此不能保證該作業將完成。使用服務應用程序將解決這個問題。

+0

我沒有想到應用程序域的問題。你是對的,這根本就不會保存......將直接事件發送到Windows服務有多容易,而不是依靠計時器來檢查數據庫是否有新工作? – 2009-08-06 08:53:08

+1

如果您使用的是.NET 3.5,則可以使用WCF直接在您的服務應用程序中託管Web服務。這樣您可以直接公開與您的服務交互的方法。如果這不是一個選項,那麼您可以使用遠程處理從您的Web服務與您的服務應用程序通信。這不是很困難,但比WCF方法更笨拙。 – 2009-08-06 09:00:54