不管是windows mobile還是windows phone7,對于連網問題都比較迷茫,現在也似乎似懂非懂,大緻會使用一些簡單的操作基本如下載下傳xml、圖檔和上傳xml、壓縮包等。
1)webClient&httpWebRequest。
看了很多網上資料,發現webClient&httpWebRequest的使用差別大同小異,見參考一http://book.51cto.com/art/200905/124208.htm :
HttpWebRequest使用基于代理的異步程式設計模型,而WebClient使用基于事件的異步程式設計模型,基于事件的模型更容易使用。
在HTTP響應傳回時引發的WebClient回調是在UI線程中調用的,是以可用于更新UI元素的屬性,例如可用于顯示HTTP響應中的資料;而HttpWebRequest回調不是在UI線程上傳回的,是以在該回調中需要額外代碼處理UI。這使得WebClient更适合于須要更新UI的應用程式。
後來自己使用的時候也沒有發現多少大的差別,基本上是webClient已經封裝好“請求和響應”,而httpWebRequest需要自己操作“請求和響應”。一般簡單的連網問題,選擇webClient比較簡單友善。
webClient的基于事件的異步程式設計模型,可以幫助隻需要使用事件來得到相應的結果,并且可以直接更新UI元素的屬性;還有一個友善之處是webClient還提供進度條事件,使用比較簡便;
httpWebRequest一般需要自己編寫“請求和響應”,并且在更新UI元素的屬性的時候需要“Dispatcher.BeginInvoke(() =>{……更新UI元素操作……});”。
2)連網時的進度條。
<1>webClient的進度條。
使用webClient下載下傳文字和圖檔,分别使用DownloadStringCompleted和OpenReadCompleted,進度條基本上都是一下子就跳到100,相當于等下載下傳完了才顯示進度條一樣。後來經風的幫助提醒,文字可能内容小下載下傳速度快,直接顯示100;圖檔的下載下傳的話,就是存在問題才導緻進度條一下子100。這個問題就是——wp7中DownloadProgressChanged事件在DownloadStringCompleted和OpenReadCompleted下是否啟動有關:
在windows phone7中的WebClient.DownloadProgressChanged事件隻有在DownloadStringAsync事件下才可以啟動,詳見http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.95).aspx:

而類似于.net framework2.0、3.0等其他版本下的WebClient.DownloadProgressChanged事件在其他事件也可以啟動,詳見 http://msdn.microsoft.com/zh-cn/library/system.net.webclient.downloadprogresschanged(v=vs.80).aspx:
從msdn上看出,進度條一下子跳到100是這個原因。如果這樣了解是錯誤的,希望能夠提醒一下,指正錯誤~ <2>關于下載下傳圖檔,windows phone7中可以直接使用BitmapImage下載下傳圖檔并線時進度。 bitmapimage有自帶下載下傳功能,而且自帶progresschange事件。事實上demo的結果也是進度條從0一直到100根據圖檔的下載下傳循序漸進,不存在什麼異常情況。是以,有個 建議:下載下傳圖檔的時候可以使用bitmapimage,這樣不管是下載下傳還是顯示進度條都比較簡便。 詳見 http://msdn.microsoft.com/zh-cn/library/system.windows.media.imaging.bitmapimage_events(v=vs.95).aspx
簡單介紹webClient和httpWebRequest的差別,webClient的進度條在windows phone7的差別,下載下傳圖檔使用bitmapimage。如果有些問題我了解錯了,懇請指點一二。 感謝微軟論壇window phone開發群的風對我的幫助。
轉載于:https://www.cnblogs.com/asnowTT/archive/2012/02/02/2335700.html