C#实现下载功能,可用于软件自动更新
2024-10-13 14:32:58
以前在百度写的文档,转移到此处
软件截图:
代码下载:
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();
}
}
}
代码中的文件路径已经失效,请自行修改
最新文章
- Android 双击 Back 键退出程序
- win7 MS SQL SERVER 2000安装
- 给sqlserver配置内存参数
- Ajax得知(两)—— 一个简单的Ajax示例
- Codeforces 768B Code For 1
- java_AWT常用组件
- udp协议的数据接收与发送的代码
- Codeforces 1154E - Two Teams - [线段树+链表]
- jmeter进行简单性能测试
- python日志1
- 日志分析工具 Log Parser
- jquery给动态添加的dom元素绑定事件
- Python20-Day07
- thinkphp模型实例化
- sgu 142. Keyword 暴力,hash 难度:0
- Error-Project facet Java version 1.8 is not supported
- influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
- ubuntu:好用的help命令
- 【转】防止CListCtrl闪烁的几种方法
- Composer安装(windows)
热门文章
- 基于drools创建自己的关系操作符
- cocos2d移植到安卓引入第三方so文件时候编译会删除解决方式
- Android开发小问题——java使用
- HADOOP集群监控工具AMBARI
- Smack+Openfire 接收和发送文件
- Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下
- android 新浪微博客户端的表情功能的实现
- idmap_ad — Samba's idmap_ad Backend for Winbind《转载》
- ibatis之##与$$的 使用
- asp.net实现将网页内容输出到word并下载到本地