using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;
private void button6_Click(object sender, System.EventArgs e)
{
//定义一个类
//实例化一个线程对象
//实例类对象赋值
DownloadClass a=new DownloadClass();
Thread thread2 = new Thread(new ThreadStart(a.DownloadFile));
a.StrUrl=textBox1.Text;
a.StrFileName=textBox2.Text;
thread2.Start();
if(thread2.Join(500))
{
MessageBox.Show(a.strError);
}
}
//测试用线程1断点续传下载网络上的文件到本地电脑
public class DownloadClass
{
//打开上次下载的文件或新建文件
public string StrUrl;//文件下载网址
public string StrFileName;//下载文件保存地址
public string strError;//返回结果
public long lStartPos =0; //返回上次下载字节
public long lCurrentPos=0;//返回当前下载字节
public long lDownloadFile;//返回当前下载文件长度
public void DownloadFile()
{
System.IO.FileStream fs;
if (System.IO.File.Exists(StrFileName))
{
fs= System.IO.File.OpenWrite(StrFileName);
lStartPos=fs.Length;
fs.Seek(lStartPos,System.IO.SeekOrigin.Current);
//移动文件流中的当前指针
}
else
{
fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
lStartPos =0;
}
//打开网络连接
try
{
System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);
long length=request.GetResponse().ContentLength;
lDownloadFile=length;
if (lStartPos>0)
request.AddRange((int)lStartPos); //设置Range值
//向服务器请求,获得服务器回应数据流
System.IO.Stream ns= request.GetResponse().GetResponseStream();
byte[] nbytes = new byte[512];
int nReadSize=0;
nReadSize=ns.Read(nbytes,0,512);
while( nReadSize >0)
{
fs.Write(nbytes,0,nReadSize);
nReadSize=ns.Read(nbytes,0,512);
lCurrentPos=fs.Length;
}
fs.Close();
ns.Close();
strError="下载完成";
}
catch(Exception ex)
{
fs.Close();
strError="下载过程中出现错误:"+ ex.ToString();
}
}
}
//定义下载类结束
分享到:
相关推荐
本书是一本通俗易懂的C#多线程编程指南,通过70多个容易理解的示例,循序渐进地讲解C#5.0中的异步及并发编程,引导读者了解Windows下C#多线程编程的多样性。 通过阅读本书,你将学到: 使用原始线程、异步线程,...
C#实现多线程下载文件,结合多线程技术的各方面知识,是比较好的学习例子。
c# 多线程文件下载程序
C#多线程下载文件工具,可添加多任务,带断点续传功能
C# 多线程下载文件 下载即可运行 vs05.
C#多线程复制代码: 1.运用线程和线程池的知识 2.可以实现 限制线程的数量 进行上传 3.用到FileStream类的读写功能 总之 大家可以参考一下!
这个代码是关于C#多线程编程的一个程序,可以正常运行
主要介绍了C#实现向多线程传参的三种方式,以实例形式较为详细的分析了C#多线程及参数传递的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
C#多线程下载文件源码测试通过,而且值得参考,源码易懂易用适合二次开发
C# 多线程基本于httpwebrequest实现的下载功能 每个线程均可以通过事件追踪情况
C#多线程的源代码,仔细越多很有用处,共同学习共同学习 积分增加了,我降下来,分享大家,喜欢可以下载
多线程大文件的快速下载,支持下载地址修改,进度条
C#编写Http多线程文件下载
c#编写串口通讯代码多线程实现,逻辑与界面分离。发送与接收都为单独线程
C#多线程实例源代码,帮助理解C#中的多线程应用及原理
用C#编写的多线程文件搜索器。 功能:让用户输入路径,文件名,用户可以随时终止线程,暂停文件搜索,重新开始搜索。可以一次性打开20个线程,搜索过程中可以显示每个线程的进程。搜索完毕后可以双击搜索结果以复制...
串口通信的实现,编程环境为C#,实现技术采用了多线程方式
利用C#语言编写一个支持多线程下载文件的程序
主要介绍了C#实现多线程下载文件的方法,实例分析了C#多线程及文件传输的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下