以前在百度写的文档,转移到此处

软件截图:

代码下载:

http://twzy.ys168.com/   在代码下载文件夹中

//代码:

using System;
using System.ComponentModel;
using System.Net;
using System.Threading;
using System.Windows.Forms;
namespace DownFile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string netPath = "http://wlkt.zufe.edu.cn/Skyclass/C91/Courseware/Bbs/080717071122.mp3";//需要下载的文件
string filePath = "D:\\just one last dance.mp3";//文件保存的路径 delegate void delDownFileHandler(int totalNum, int num, int proc);//用于指示文件信息(文件大小,当前下载的数量,当前下载的百分比)
delegate void delComDownFileHandler(bool isCompleted);//文件下载完成之后 WebClient wc = new WebClient();
private void button1_Click(object sender, EventArgs e)
{
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
progressBar1.Value = ;
label1.Text = "";
button2.Enabled = true;
button1.Enabled = false; //使用线程启动
Thread td = new Thread(new ThreadStart(loadFile));
td.IsBackground = true;
td.Start(); } //线程启动
private void loadFile()
{
if (wc.IsBusy)
{
wc.CancelAsync();
}
wc.DownloadFileAsync(new Uri(netPath), filePath); } //更新过程中触发的事件(在线程中不能直接操纵控件,因此用委托执行) void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
this.Invoke(new delDownFileHandler(processShow), new object[] { (int)e.TotalBytesToReceive, (int)e.BytesReceived, e.ProgressPercentage });
} //委托执行 (进度条和字符标识)
private void processShow(int totalNum, int num, int proc)
{
progressBar1.Maximum = totalNum;
progressBar1.Value = num;
label1.Text = "正在下载:" + (num / ()).ToString() + "KB/" + (totalNum / ).ToString() + "KB " + proc.ToString() + "%";
} //完成更新之后触发的事件
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
this.Invoke(new delComDownFileHandler(comDownFile), new object[] { false });
else
this.Invoke(new delComDownFileHandler(comDownFile), new object[] { true });
} private void comDownFile(bool isCompleted)
{
if (isCompleted) label1.Text = "下载完成";
else
label1.Text = "下载取消"; progressBar1.Value = ;
button1.Enabled = true;
button2.Enabled = false; } //点击取消后
private void button2_Click(object sender, EventArgs e)
{
wc.CancelAsync();
wc.Dispose();
}
}
}

代码中的文件路径已经失效,请自行修改

最新文章

  1. Android 双击 Back 键退出程序
  2. win7 MS SQL SERVER 2000安装
  3. 给sqlserver配置内存参数
  4. Ajax得知(两)—— 一个简单的Ajax示例
  5. Codeforces 768B Code For 1
  6. java_AWT常用组件
  7. udp协议的数据接收与发送的代码
  8. Codeforces 1154E - Two Teams - [线段树+链表]
  9. jmeter进行简单性能测试
  10. python日志1
  11. 日志分析工具 Log Parser
  12. jquery给动态添加的dom元素绑定事件
  13. Python20-Day07
  14. thinkphp模型实例化
  15. sgu 142. Keyword 暴力,hash 难度:0
  16. Error-Project facet Java version 1.8 is not supported
  17. influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
  18. ubuntu:好用的help命令
  19. 【转】防止CListCtrl闪烁的几种方法
  20. Composer安装(windows)

热门文章

  1. 基于drools创建自己的关系操作符
  2. cocos2d移植到安卓引入第三方so文件时候编译会删除解决方式
  3. Android开发小问题——java使用
  4. HADOOP集群监控工具AMBARI
  5. Smack+Openfire 接收和发送文件
  6. Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下
  7. android 新浪微博客户端的表情功能的实现
  8. idmap_ad — Samba's idmap_ad Backend for Winbind《转载》
  9. ibatis之##与$$的 使用
  10. asp.net实现将网页内容输出到word并下载到本地