2012-05-28 332 views
0

當我的應用程序在墓碑中時,我需要等到WebClientUploadStringAsync纔會在被墓碑化之前返回響應。我試圖通過阻塞UI線程幾秒鐘來實現它,但我注意到,當UI被阻塞時,沒有響應來臨。當我釋放鎖定(無論是Thread.sleep還是ManualResetEvent),響應正在同時進行。 當然,UploadStringAsyncUploadStringCompleted工作在其他UI的線程上。 也許你會知道這些行爲的原因是什麼?WebClient - 如何阻止UI

回答

2

你不能,不應該這樣做:

不能無限期地阻塞,當應用程序被停用,因爲操作系統不會讓你,你可能不得不無限期地更新,因爲沒有告訴網絡請求需要多長時間,甚至可能的方式。

相反,您應該在正常使用應用程序的過程中在適當的時候(或多次)將數據提交給Web服務器。如果您希望在停用期間保存特殊狀態,您應該堅持這一點(作爲approrpiate),然後在應用程序重新激活或重新啓動時(根據數據的類型和相關性再次適當調整)發送。

+0

感謝您的建議。但情況並不那麼簡單 - 我的應用程序中的一部分需要3個webRequest,彼此之間必須使用來自先前webRequest響應的信息。而且我無法重新發送webRequest,因爲服務器會將此解釋爲錯誤,並只給出有關錯誤的信息。所以,如果我錯過了webResponse,我不能重新發送數據。 – Thaven