本软件利用WebClient.DownloadFileAsync实现下载网络数据。很简单的一个程序。
源程序:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace FlyDown
{
public partial class Form1 : Form
{
Timer timer = new Timer();
long timecount = 0;
public Form1()
{
InitializeComponent();
timer.Enabled = false;
timer.Interval = 1000;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
timer.Enabled = true;
timer .Tick +=new EventHandler(timer_Tick);
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
using (WebClient wc = new WebClient())
{
if (textBox1.Text.Trim() == "")
MessageBox.Show("请输入下载路径");
else if (textBox2.Text.Trim() == "")
MessageBox.Show("请输入文件存储名");
else
{
try
{
wc.Proxy = null;
Uri address = new Uri(textBox1.Text.ToString());
//调用DownloadFile方法下载文件
// wc.DownloadFile(textBox1.Text.ToString(), textBox2.Text.ToString());
//调用DownloadFileAsync异步下载文件
wc.DownloadFileAsync(address, textBox2.Text.ToString());
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
//下载完成的响应事件
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
//if(File .Exists (textBox2 .Text .ToString ()))
// {
// TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
// TimeSpan ts=ts2.Subtract (ts1 ).Duration();
// MessageBox.Show("文件下载完成.下载用时:" + ts.Hours.ToString() + "小时" +
// ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒");
// }
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
private void timer_Tick(object o, EventArgs e)
{
timecount++;
}
//提示下载完成,并显示下载用时
private void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show("下载完成,下载用时:"+timecount+"秒" );
}
//定义进度条响应事件
private void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void button2_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(textBox2.Text.ToString());
}
private void button3_Click(object sender, EventArgs e)
{
//MessageBox.Show(Application.ExecutablePath+"+"+Directory .GetCurrentDirectory ()+"+"+Application .StartupPath);
System.Diagnostics.Process.Start(Application.StartupPath);
}
}
}