WP7-文件下载进度和速度显示
来源:互联网 发布:北大青鸟软件培训课程 编辑:程序博客网 时间:2024/06/05 09:06
转自:http://www.cnblogs.com/linzheng/archive/2011/11/03/2234971.html
用http协议来下载网络上的文件,通常我们需要获取文件文件的下载进度和下载的速度来给用户等待过程的一个交代,那么在windows phone 7下可以使用WebClient类来实现这一功能,HttpWebRequest类也可以用于下载网络上的文件,不过HttpWebRequest类不能够直接地获取你http请求的完成情况。
使用WebClient.DownloadProgressChanged事件来异步获取http协议下载文件的进度情况,使用WebClient.DownloadStringCompleted事件来判断文件的下载是否完成。
<phone:PhoneApplicationPage x:Class="DownLoadTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="下载进度显示" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Grid.RowDefinitions> <RowDefinition Height="114*"/> <RowDefinition Height="493*"/> </Grid.RowDefinitions> <ProgressBar Foreground="Green" Height="30" HorizontalAlignment="Left" Margin="9,79,0,0" Name="progressBar1" VerticalAlignment="Top" Width="377" Value="0" Maximum="100" FontSize="72" BorderThickness="0"/> <TextBlock Height="53" Margin="12,20,-16,0" Name="textBox1" Text="正在下载文件 . . ." VerticalAlignment="Top" Width="460"/> <TextBlock Margin="6,24,287,427" Name="result" Text="下载的速度: " Grid.Row="1"/> <TextBlock Foreground="White" Height="59" HorizontalAlignment="Left" Margin="203,13,0,0" Name="textBox2" Text="" VerticalAlignment="Top" Width="123"/> <Button Content="测试下载" Height="72" HorizontalAlignment="Left" Margin="96,244,0,0" Name="button1" VerticalAlignment="Top" Width="199" Click="button1_Click" Grid.Row="1"/> <TextBlock Height="59" Margin="2,101,254,0" Name="finalresult" Text="平均的下载速度: " VerticalAlignment="Top" Grid.Row="1"/> <TextBlock Height="57" HorizontalAlignment="Left" Margin="174,89,0,0" Name="textBlock1" Text="" VerticalAlignment="Top" Width="156" Grid.Row="1"/> <TextBlock Height="47" HorizontalAlignment="Left" Margin="12,166,0,0" Name="textBlock2" Text="文件的大小:" VerticalAlignment="Top" Width="127" Grid.Row="1"/> <TextBlock Height="47" HorizontalAlignment="Right" Margin="0,166,190,0" Name="textBlock3" Text="" VerticalAlignment="Top" Grid.Row="1" Width="121"/> <TextBlock Height="47" HorizontalAlignment="Right" Margin="0,19,190,0" Name="textBlock4" Text="" VerticalAlignment="Top" Grid.Row="1" Width="134"/> </Grid> </Grid></phone:PhoneApplicationPage>
using System;using System.Net;using System.Windows;using Microsoft.Phone.Controls;using System.Diagnostics;namespace DownLoadTest{ public partial class MainPage : PhoneApplicationPage { private long siz; private long speed; private Stopwatch sw; private Stopwatch sw1; public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { testspeed(); } public void testspeed() { WebClient client = new WebClient(); progressBar1.Value = 0.0; textBox2.Text = "0 %"; client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(this.webClient_DownloadStringCompleted); client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.webClient_DownloadProgressChanged); sw = Stopwatch.StartNew();//用来记录总的下载时间 sw1 = Stopwatch.StartNew();//用来记录下载过程中的时间片,用于计算临时速度 client.DownloadStringAsync(new Uri("http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe")); } //下载过程事件 public void webClient_DownloadProgressChanged(object s, DownloadProgressChangedEventArgs e) { textBox2.Text = e.ProgressPercentage.ToString() + " %"; sw1.Stop(); long num = e.BytesReceived / 1024; if (sw1.Elapsed.Seconds != 0) { speed = num / ((long)sw1.Elapsed.Seconds); } textBlock4.Text = this.speed + " KB/sec"; progressBar1.Value = e.ProgressPercentage; siz = e.TotalBytesToReceive; textBlock3.Text = siz + "KB"; sw1.Start(); } //下载完成事件 public void webClient_DownloadStringCompleted(object s, DownloadStringCompletedEventArgs e) { sw.Stop(); siz = siz/1024; long num = siz / ((long)sw.Elapsed.Seconds); sw.Reset(); textBox1.Text = "下载完成!"; textBlock1.Text = num + " KBytes/sec"; } }}
- WP7-文件下载进度和速度显示
- 文件下载通告栏显示下载进度和下载文件名称
- Android APK文件下载 并自动安装 显示文件下载进度,速度,以及花费时间
- android 多线程下载 显示进度 速度
- android 多线程下载 显示进度 速度
- android 多线程下载 显示进度 速度
- Retrofit文件下载进度显示
- 安卓文件下载,显示下载进度
- NSURLConnection下载文件时,如何显示进度
- NSURLConnection下载文件时,如何显示进度
- NSURLConnection下载文件并显示进度
- NSURLConnection下载文件并显示进度(HEAD)
- NSURLConnection下载文件并显示进度(HEAD)
- android AsyncTask下载文件并且显示进度
- 下载远程文件, 加入一个进度显示
- 阿里云 oss 文件下载进度显示
- 解决Retrofit文件下载进度显示问题
- Retrofit+Rxjava 下载文件(带进度显示)
- MIME Types
- 改善不良团队的十种方法
- 续上篇博客---第六章总结
- WP7-HttpWebRequest超时管理
- pthread_key_t和pthread_key_create()的使用
- WP7-文件下载进度和速度显示
- 网站管理系统
- 庆祝找回csdn的密码散分顺带推广下偶的小站
- 一天学会MVC3之Scaffolding
- Ogre 正常初始化(0xc0150002)失败 解决办法
- Js编程小技巧(不断积累中)
- IE9 "已停止工作" 的解决办法
- xCAT2安装配置
- Excel数据库