c# 实现进度条下载文件
2013-05-21 09:24
387 查看
使用到的c#控件主要有:Label,ProgressBar,Button
首先引用命名空间
using System.Diagnostics;
using System.IO;
using System.Net;
定义全局变量
WebClient webClient; //下载文件使用
Stopwatch sw = new Stopwatch(); //用于计算下载速度
使用的主要代码:
public void DownloadFile(string urlAddress, string location)
{
using (webClient = new WebClient())
{
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressC
4000
hanged);
try
{
Uri URL;
// 先判断是否包括http://
if (!urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
URL = new Uri("http://" + urlAddress);
else
URL = new Uri(urlAddress);
sw.Start();
// 开始异步下载
webClient.DownloadFileAsync(URL, location);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
try
{
// 显示下载速度
if (labelPerc.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0"))
labelSpeed.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";
// 进度条
if (progressBar.Value != e.ProgressPercentage)
progressBar.Value = e.ProgressPercentage;
// 当前比例
if (labelPerc.Text != e.ProgressPercentage.ToString() + "%")
labelPerc.Text = e.ProgressPercentage.ToString() + "%";
// 下载了多少 还剩余多少
labelDownloaded.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " Mb's" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " Mb's";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// The event that will trigger when the WebClient is completed
private void Completed(object sender, AsyncCompletedEventArgs e)
{
sw.Reset();
if (e.Cancelled == true)
{
//下载未完成
}
else
MessageBox.Show("下载完毕!");
}
在下载文件时,只需调用DownloadFile方法,如下:
DownloadFile(“下载文件地址”, “文件保存地址”);
首先引用命名空间
using System.Diagnostics;
using System.IO;
using System.Net;
定义全局变量
WebClient webClient; //下载文件使用
Stopwatch sw = new Stopwatch(); //用于计算下载速度
使用的主要代码:
public void DownloadFile(string urlAddress, string location)
{
using (webClient = new WebClient())
{
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressC
4000
hanged);
try
{
Uri URL;
// 先判断是否包括http://
if (!urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
URL = new Uri("http://" + urlAddress);
else
URL = new Uri(urlAddress);
sw.Start();
// 开始异步下载
webClient.DownloadFileAsync(URL, location);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
try
{
// 显示下载速度
if (labelPerc.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0"))
labelSpeed.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";
// 进度条
if (progressBar.Value != e.ProgressPercentage)
progressBar.Value = e.ProgressPercentage;
// 当前比例
if (labelPerc.Text != e.ProgressPercentage.ToString() + "%")
labelPerc.Text = e.ProgressPercentage.ToString() + "%";
// 下载了多少 还剩余多少
labelDownloaded.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " Mb's" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " Mb's";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// The event that will trigger when the WebClient is completed
private void Completed(object sender, AsyncCompletedEventArgs e)
{
sw.Reset();
if (e.Cancelled == true)
{
//下载未完成
}
else
MessageBox.Show("下载完毕!");
}
在下载文件时,只需调用DownloadFile方法,如下:
DownloadFile(“下载文件地址”, “文件保存地址”);
相关文章推荐
- C#下载文件(可显示进度)的方法实现
- C#下载文件(可显示进度)的方法实现
- C#下载文件并显示显示进度的方法实现
- C#下载文件(可显示进度)的方法实现
- 【转】c#实现文件下载
- C#实现http协议支持上传下载文件的GET、POST请求
- asp.net C#实现下载文件的六种方法实例
- Retrofit+RxJava实现带进度下载文件
- 基于Retrofit+Okio+RxBus实现文件下载(带下载进度)
- C#下载大文件并实现断点续传
- C# 实现FTP上传下载文件
- python实现进度条--主要用在上传下载文件
- Android实现Service下载文件,Notification显示下载进度
- Retrofit+Rxjava下载文件进度的实现
- Android实现文件上传和下载倒计时功能的圆形进度条
- 使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! C#/ASP.Net 实现
- C#实现http多线程下载文件
- 实现文件下载并且显示下载进度
- Android中使用AsyncTask实现文件下载以及进度更新提示
- C#实现在winfrom程序中下载文件