wp7,webClient&httpWebRequest&BitmapImage

不管是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,这样不管是下载还是显示进度条都比较简便。

 
简单介绍webClient和httpWebRequest的区别,webClient的进度条在windows phone7的区别,下载图片使用bitmapimage。如果有些问题我理解错了,恳请指点一二。
 
感谢微软论坛window phone开发群的风对我的帮助。
 

转载于:https://www.cnblogs.com/asnowTT/archive/2012/02/02/2335700.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值