2010-06-17 31 views
1

製作WCF Web服務時,在使用帶有Webbrowser控件的方法時遇到了問題。該方法啓動一個線程,並使用web瀏覽器控件填寫一些表單並進一步點擊,等待事件處理程序觸發並返回我需要的答案。該方法經過測試並在自己的環境中工作,但在WCF Web服務環境中使用,事件處理程序不會觸發。這樣的結果是等待的manualresetevent沒有結束。這是因爲新線程還是因爲Web服務的錯誤事件處理?如果是的話,什麼是合理的解決方案?在WCF Web服務中使用線程和事件處理程序

+0

只需檢查 - 「WebBrowser」在*客戶端*,是嗎? – 2010-06-17 07:31:20

+0

Web應用程序使用Web服務。 Web服務需要自己的瀏覽器元素,並使用事件處理程序來填寫並從其他站點獲取信息。 因此:Browser1 - > Web App - > Web Service - >在其他站點上執行操作(新的瀏覽器 - >打開url - >填入URL - >按下ok - > catch response - >處理回答) - >返回網絡服務的答案 – user368984 2010-06-17 08:23:59

+0

您最好使用'HttpWebRequest'或'WebClient',因爲它們還可以讓您執行同步請求。 – ErikHeemskerk 2010-06-18 04:33:26

回答

0

Browser1 - > Web應用程序 - > Web服務 - >像對其他網站(新瀏覽器操作 - >打開URL - > URL中填寫 - >按確定 - >抓響應 - >處理答案)

如果您的系統中創建「新瀏覽器」的部分作爲服務運行,或者作爲Windows服務運行,自託管的WCF服務進程或IIS;那麼很可能你不會得到GUI事件,因爲沒有GUI。除此之外,GUI事件處理程序還需要Windows消息泵,而這些消息在這些情況下不可用。

嘗試託管您的服務,然後說一個Windows窗體主機來查看,我懷疑它會起作用。

如果您必須在IIS或Windows服務(非GUI)下使用您的系統,那麼您可以始終與具有消息泵的代理主機進程進行通信,以便爲您完成所有瀏覽內容。一旦完成你的「答案」可以發回到網絡應用程序

相關問題