C#实现下载功能,可用于软件自动更新
以前在百度写的文档,转移到此处
软件截图:
代码下载:
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();
}
}
}
代码中的文件路径已经失效,请自行修改
C#实现下载功能,可用于软件自动更新的更多相关文章
- Android - 软件自动更新的实现
转自:http://blog.csdn.net/wwj_748/article/details/8195565 接触到一个很实用的技术,那就是软件自动更新.一般开发者是通过自行在应用平台添加更新版本的 ...
- Android 软件自动更新功能实现的方法
相信所有的用户都遇到过软件提醒更新的情况,下面就将实现此功能 首先看一下程序目录结构 步骤: 1.新建一个类UpdateManger,用于显示提示更新 详细出处参考:http://www.jb51.n ...
- 如何屏蔽 iOS 软件自动更新,去除更新通知和标记
适用于 iOS.iPadOS 和 watchOS,即 iPhone.iPad 和 Apple Watch 通用. 请访问原文链接:https://sysin.org/article/Disable-i ...
- .net winform软件自动更新
转载自 http://dotnet.chinaitlab.com/DotNetFramework/914178.html 关于.NET windows软件实现自动更新,本人今天写了一个DEMO,供大家 ...
- Qt实现软件自动更新的一种简单方法
前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新&quo ...
- Eclipse 下载、安装、取消自动更新、设置编码、关联Tomcat
1.下载 (1)安装jdk 如果进行web开发,下载java se 版本的jdk即可,不需要像安装 java se 一样安装java ee(里面大多是接口和抽象类).关于java ee的依赖问题有两种 ...
- C# Winform 中使用FTP实现软件自动更新功能
实现思路:通过访问FTP站点,将站点中的文件下载至软件指定位置. 第一步:FTP站点中导入需要下载更新的程序文件,并添加配置文件(配置下载后文件的下载路径),如下图所示: 第二步:Winfrom程序读 ...
- Android - 软件自动更新的实现(转)
在客户端实现更新操作 涉及到三个技术: 1.xml文件的解析 2.HttpURLConnection连接 3.文件流I/O 这里创建一个解析xml文件的服务类:ParXmlService.java p ...
- Android应用自动更新功能的代码实现
由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必 ...
随机推荐
- HBase二级索引的设计(案例讲解)
摘要 最近做的一个项目涉及到了多条件的组合查询,数据存储用的是HBase,恰恰HBase对于这种场景的查询特别不给力,一般HBase的查询都是通过RowKey(要把多条件组合查询的字段都拼接在RowK ...
- 为iPhone6设计自适应布局(一)
译者的话:本文是自适应布局的巩固篇,所以对布局约束的添加操作步骤等没有详细的说明.如果看着吃力的话请先移步Swift自适应布局(Adaptive Layout)教程. Apple从iOS6加入了Aut ...
- Android ActionBar详解(三):ActionBar实现切换Tabs标签
实现切换Tabs标签; Activity代码: public class ActionBarTabs extends Activity { @Override protected void onCre ...
- C-二维数组,多维数组
-----二维数组 ->在数组定义当中,行数和列数需要用常量定义 ->在定义的时候如果没有数值进行填充,则补零 ->第一个数是行,第二个数是列 ...
- ios浅谈关于nil和 NIL区别及相关问题(转)
转自:http://blog.csdn.net/guozh/article/details/8469131 个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次 ...
- C#调用Java代码
c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...
- 基于JQUERY写的 LISTBOX 选择器
本文来之于:http://blog.csdn.net/jetsteven/article/details/5104380# 1.经常用到如下图的选择器,而且要支持排序的,所以萌生用JQUERY写一个. ...
- iOS import导入pod第三方库不提示问题
pod 导入第三方库后,使用import 不提示第三方库头文件. 解决办法: 选择target -> BuildSettings -> search Paths 下的 User Heade ...
- WCF相关
1.WCF初探-1:认识WCF(概览)2.WCF初探-2:手动实现WCF程序3.WCF精通系列4.无废话WCF系列教程
- hadoop容灾能力测试
实验简单来讲就是 1. put 一个600M文件,分散3个replica x 9个block 共18个blocks到4个datanode 2. 我关掉了两个datanode,使得大部分的block只在 ...