CS异步下载
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms; namespace 下载示例
{
public delegate void form1ContentControl(bool isFinish); public partial class Form2 : Form
{
public Form2(string _sourceFile,string _destFile)
{
InitializeComponent();
sourceFile = _sourceFile;
destFile = _destFile;
} public string sourceFile;
public string destFile; public event form1ContentControl contentControl; private void Form2_Load(object sender, EventArgs e)
{
label1.Text = String.Format("[{0}]下载中...",Path.GetFileName(sourceFile));
fileDownloading();
} private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "取消")
{
this.Close();
}
else
{
contentControl(true);
this.Close();
}
} private void fileDownloading()
{
try
{
WebClient client = new WebClient();
//进行异变下载
client.DownloadFileAsync(new Uri(sourceFile), destFile);
//绑定进度改变时的事件
client.DownloadProgressChanged += client_DownloadProgressChanged;
//绑定完成时事件
client.DownloadFileCompleted += client_DownloadFileCompleted;
}
catch (WebException we)
{
MessageBox.Show(we.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} /// <summary>
/// 事件:WEBCIENT下载进度改变时触发的回调事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Action<DownloadProgressChangedEventArgs> onCompleted = progressChanging;
onCompleted.Invoke(e);
} /// <summary>
/// 事件:WEBCLIENT下载完成时的回调事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
Action<AsyncCompletedEventArgs> onCompleted = progressCompleted;
onCompleted.Invoke(e);
} /// <summary>
/// 文件下载进度改变时触发
/// </summary>
/// <param name="de"></param>
private void progressChanging(DownloadProgressChangedEventArgs de)
{
progressBar1.Value = de.ProgressPercentage;
linkLabel1.Text = String.Format("{0}%",de.ProgressPercentage);
linkLabel2.Text = String.Format("{0}M/{1}M",Math.Round((double)de.BytesReceived/1024/1024,2),Math.Round((double)de.TotalBytesToReceive/1024/1024,2));
} /// <summary>
/// 当文件下载完成时触发
/// </summary>
/// <param name="de"></param>
private void progressCompleted(AsyncCompletedEventArgs de)
{
label1.Text = String.Format("[{0}]下载已经完成!", Path.GetFileName(sourceFile));
button1.Text = "完成";
}
}
}
CS异步下载的更多相关文章
- 一个简单的利用 WebClient 异步下载的示例(二)
继上一篇 一个简单的利用 WebClient 异步下载的示例(一) 后,我想把核心的处理提取出来,成 SkyWebClient,如下: 1. SkyWebClient 该构造函数中 downloadC ...
- Android多线程分析之五:使用AsyncTask异步下载图像
Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<An ...
- Android多线程分析之一:使用Thread异步下载图像
Android多线程分析之一:使用Thread异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 打算整理一下对 Android F ...
- WebClient.DownloadFile(线程机制,异步下载文件)
线程机制(避免卡屏),异步下载文件. 我做网站的监控,WebClient.DownloadFile这个方法是我经常用到的,必要的时候肯定是要从网上下载些什么(WebRequest 也可以下载网络文件, ...
- iOS异步下载下载进度条显示
说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection NSURLRequest NSMutableURLRequest 委托是 NSURLConnectionDo ...
- unity下载文件三(http异步下载)
异步下载,顾名思义就是不影响你主线程使用客户端的时候,人家在后台搞你的明堂. 直接入主题,既然要下载,首先得请求,请求成功之后进行回调,这就是一个异步过程,异步回调的时间不可控. 1.首先请求下载. ...
- Android 中的异步下载
网上提到最多的就是利用AsyncTask进行异步下载,用android-async-http第三方库的也比较多.这里写点注意事项. 先说说android-async-http,这个库发送请求利用thr ...
- FtpWebRequest FTP异步下载、异步上传文件
异步下载: public interface IPrimaryKey<T> { T GetKey(); } public class DownloadInfo : IPrimaryKey& ...
- Android异步下载图片并且缓存图片到本地
Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...
随机推荐
- Hadoop on Mac with IntelliJ IDEA - 10 陆喜恒. Hadoop实战(第2版)6.4.1(Shuffle和排序)Map端 内容整理
下午对着源码看陆喜恒. Hadoop实战(第2版)6.4.1 (Shuffle和排序)Map端,发现与Hadoop 1.2.1的源码有些出入.下面作个简单的记录,方便起见,引用自书本的语句都用斜体表 ...
- apache2 添加perl支持
官方文档,很详细了. https://httpd.apache.org/docs/2.0/howto/cgi.html#configuring 我修改了/etc/apache2/sites-ava ...
- Swift学习资源
原文: http://leancodingnow.com/swift-learning-resources/ Swift是Apple在今年的WWDC推出的一门新的编程语言,它的1.0版本跟着Xcode ...
- Could not load the assembly 'App_Web_cwclgcuu'. Make sure that it is compiled before accessing the page.
将网站迁移到windows server 2012 R2(64 bit), IIS 6.2(build 9200)上,爆出这个错误. 解决:右键相应的application pool,选择“Set A ...
- Javascript模块化编程系列三: CommonJS & AMD 模块化规范描述
CommonJS Module 规范 CommonJS 的模块化规范描述在Modules/1.1.1 中 目前实现此规格的包有: Yabble,CouchDB,Narwhal (0.2), Wakan ...
- 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配
垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己 ...
- android之多媒体篇(二)
管理音频焦点 情景:当你的app隐退到后台,而其他也有播放能力的app浮现在前台,这个时候,你可能要暂停你原有app的播放功能,和解除监听Media Button,把控制权交给前台的APP. 这就需要 ...
- 了解PHP中Stream(流)的概念与用法(转)
Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数.Stream可以翻译为“流”,在Java里,流是一个很重要的 ...
- 基于Raft构建弹性伸缩的存储系统的一些实践
基于Raft构建弹性伸缩的存储系统的一些实践 原创 2016-07-18 黄东旭 聊聊架构 最近几年来,越来越多的文章介绍了 Raft 或者 Paxos 这样的分布式一致性算法,但主要集中在算法细节和 ...
- IOPS
http://www.cnblogs.com/sink_cup/archive/2012/09/14/ssd_iops_sql_nosql.html http://www.techrepublic.c ...