大体设想了两种更新方式,以下所示:html
一种简单暴力,直接请求静态资源服务器上的文件服务器
第二种考虑了网络传输不稳定时,中断的状况。再次启动更新时会检测本地文件下载多少了,而后接着上次中断的位置继续下载。网络
更新过程就如同平时你们使用软件更新的过程同样,客户端程序启动,检测到更新,启动更新程序,客户端关闭,更新程序下载更新包,下载完成后进行解压,覆盖本地客户端文件,更新程序启动客户端,客户端启动,更新程序关闭。异步
主要使用WebClient类及HttpWebRequest类spa
1.WebClient.DownloadFileCompleted事件:异步文件下载操做完成时发生。.net
备注:设计
每次异步文件下载操做完成后,将引起此事件。经过调用启动的异步文件下载 DownloadFileAsync 方法code
AsyncCompletedEventHandler是此事件的委托。htm
AsyncCompletedEventArgs类为事件处理程序提供事件数据blog
示例:
2.WebClient.DownloadProgressChanged事件:在异步下载操做成功转换部分或所有数据时发生。
备注:
每当异步下载取得进展时,就会引起此事件。
DownloadProgressChangedEventHandler是此事件的委托
DownloadProgressChangedEventArgs类为事件处理程序提供事件数据
使用如下方法之一启动下载时,引起此事件:
DownloadDataAsync 从资源下载数据并返回Byte[]数据
DownloadFileAsync 将数据从资源下载到本地文件
OpenReadAsync 从资源返回数据
3.DownloadProgressChanged事件:使用DownloadProgressChangedEventArgs类 实例化为e
e.TotalBytesToReceive 从WebClient数据下载操做获取的字节总数
e.BytesReceived 获取一次接收的字节数
e.ProgressPercentage 获取异步任务进度百分比
e.UserState 获取惟一的用户状态
抱歉刚刚没写完就传上来了,被同事拉回家了。。。。。。
出处:https://blog.csdn.net/Yl12fh/article/details/81033295