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 = 0;
            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 / (1024)).ToString() + "KB/" + (totalNum / 1024).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 = 0;
            button1.Enabled = true;
            button2.Enabled = false;

        }

        //点击取消后
        private void button2_Click(object sender, EventArgs e)
        {
            wc.CancelAsync();
            wc.Dispose();
        }
    }
}

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

时间: 2024-11-08 23:08:03

C#实现下载功能,可用于软件自动更新的相关文章

延缓或阻止Windows 10软件自动更新教程

Windows10强制自动更新机制从"诞生"之际就褒贬不一,强制更新之后从一定程度上提高了系统的安全性,然而它同时也会给用户带来许多不可预料的麻烦,比如说前一段时间的无限重启.那么我们能不能阻止软件自动更新呢?答案当然是肯定的.  如果你使用的是Win10专业版,可以通过设置来推迟升级,具体操作方法如下:  打开开始菜单,然后依次打开"设置"--"更新和安全",然后点击"高级选项",选择"推迟升级"即可. 

Android - 软件自动更新的实现(转)

在客户端实现更新操作 涉及到三个技术: 1.xml文件的解析 2.HttpURLConnection连接 3.文件流I/O 这里创建一个解析xml文件的服务类:ParXmlService.java [java] view plaincopy package com.xiaowu.news.update; import java.io.InputStream; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; i

Android - 软件自动更新的实现

转自:http://blog.csdn.net/wwj_748/article/details/8195565 接触到一个很实用的技术,那就是软件自动更新.一般开发者是通过自行在应用平台添加更新版本的apk.这样做,如果是在一两个应用平台发布应用,那还说得过去,工作量还不是很大.但大家都知道,Android开发者是比较苦逼的.由于开源所致,出现了N多应用市场.如果想赚取更多的收入,那就要在各个应用市场进行更新.那就悲催咯. 比较出名的一些应用市场有如下: 那如何实现软件自动更新,下面是具体实例:

android软件自动更新的实现步骤

本篇文章是直接下载最新的APK安装的方法,并不是增量下载该APk. 转载请注明出处:http://blog.csdn.net/harryweasley/article/details/44955719,谢谢 想要实现一个android应用,自动更新下载APK软件的方法,我采取的是以下几步方法: 1.每次进入主界面时,获取服务器的数据,看是否是最新版本,是,则无操作,否,则进行以下步骤: 2.弹出是否更新软件的对话框,点击下载后 3.弹出下载的进度条的对话框,开始下载,可以上随时点击按钮,停止下载

Qt实现软件自动更新的一种简单方法

前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新"按钮,如果当前版本低于远程的版本,那么会弹出如下窗口,提示更新,并显示远程的的版本号,更新时间,更新说明,如下图所示: 如果点击"去下载",那么会调用系统默认浏览器,直接创建下载任务.点击"不更新",则取消更新. 如果当前版本号和远程一致,那么会提示"已经

Android软件自动更新(自定义处理,不使用第三方)

来源:http://www.android100.org/html/201406/08/21956.html XML放入网络空间---version.xml .url地址应该为正常***/*****.apk<update> <version>5</version> <name>yuanbao</name> <url>http://cdn.market.hiapk.com/data/upload//2012/06_27/13/yuanb

Android应用自动更新功能的代码实现

由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息: <update> <version>2</version> <name>baidu

Android 应用自动更新功能的代码

由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息: <update> <version>2</version> <name>baidu

[转]Android应用自动更新功能的代码实现

本文转自:http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html 由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软