using System;
using System.IO;
using System.Net;
namespace winform1
{
class DownloadThread
{
///
/// 线程开始事件
///
public event EventHandler threadStartEvent;
///
/// 线程执行时事件
///
public event EventHandler threadEvent;
///
/// 线程结束事件
///
public event EventHandler threadEndEvent;
///
/// c#,.net 下载文件
///
/// 下载文件地址
/// 下载后的存放地址
public void RunMethod(string url, string filename)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//通知主界面,我开始了, response.ContentLength用来设置进度条的最大值
threadStartEvent.Invoke(response.ContentLength, null);
Stream st = response.GetResponseStream();
Stream so = new FileStream(filename, FileMode.Create);
long totalDownloadedByte = 0;
byte[] by = new byte[1024];
int osize = st.Read(by, 0, by.Length);
while (osize > 0)
{
totalDownloadedByte += osize;
so.Write(by, 0, osize);
osize = st.Read(by, 0, by.Length);
//通知主界面我正在执行,totalDownloadedByte表示进度条当前进度
threadEvent.Invoke(totalDownloadedByte, null);
}
so.Close();
st.Close();
//通知主界面我已经完成了
threadEndEvent.Invoke(null, null);
}
catch (Exception)
{
throw;
}
}
}
}