C#用线程传参下载文件的代码

下载

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();
    
    }
  
   }
  } 
  //定义下载类结束 

时间: 2024-11-01 05:41:39

C#用线程传参下载文件的代码的相关文章

sql-Asp.net的上传和下载文件的代码怎么写?

问题描述 Asp.net的上传和下载文件的代码怎么写? 我要做一个Asp.netSql数据库的网盘系统,亲们快帮我想想办法啊 解决方案 参考:http://www.cnblogs.com/zcttxs/archive/2012/05/21/2511947.html

委托/事件/线程传参简单理解

写了很多代码,但几乎都没写过委托/事件/线程传参方面应用的代码 因此自己总很容易理解后又遗忘 今天又重温了一下 因此以最简单的方式的代码方式写下来帮助理解 1.线程传参[简单几行代码]    1 static void Main(string[] args) 2         { 3             if (ThreadPool.QueueUserWorkItem(new WaitCallback(Program.WritePara), "这是传进去的参数")) 4     

如何使用Task实现多线程上传或者下载文件

问题描述 如何使用Task实现多线程上传或者下载文件 大家早上好,怎么使用Task实现多线程上传或者下载,要求是每次2个,其他的等待. 解决方案 楼主给你一个多线程下载Demo.http://download.csdn.net/download/mad1989/7727133 解决方案二: 楼主给你一个多线程下载Demo.http://download.csdn.net/download/mad1989/7727133 解决方案三: 楼主可以参开一下http://download.csdn.ne

linux基础命令(26) 用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的, SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传 输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起 止时间.错误的判断与纠正等内容.常见的传输协议有以下几种: ASCII:这是最快的传输协议,但只能传送文本文件. Xmode

Linux使用SecureCRT上传和下载文件教程

  Linux使用SecureCRT上传和下载文件教程:         我们在日常工作中,经常会需要上传或者下载一些文件,Linux用户也不例外.那么在Linux系统中,有什么比较好用的上传下载工具呢?今天小编就教大家如何使用SecureCRT上传或下载文件. 具体操作步骤: 1.需要上传或者下载,需要使用rz和sz命令.如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运行命令yum install lrzsz. 2.安装完成后就可以使用rz命令上传本地的文件到linux

php实现SAE上使用storage上传与下载文件的方法_php技巧

本文实例讲述了php实现SAE上使用storage上传与下载文件的方法.分享给大家供大家参考.具体如下: <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: "

如何在命令行中使用 ftp 命令上传和下载文件

如何在命令行中使用 ftp 命令上传和下载文件 本文中,介绍在 Linux shell 中如何使用 ftp 命令.包括如何连接 FTP 服务器,上传或下载文件以及创建文件夹.尽管现在有许多不错的 FTP 桌面应用,但是在服务器.SSH.远程会话中命令行 ftp 命令还是有很多应用的.比如.需要服务器从 ftp 仓库拉取备份. 步骤 1: 建立 FTP 连接 想要连接 FTP 服务器,在命令上中先输入ftp然后空格跟上 FTP 服务器的域名 'domain.com' 或者 IP 地址 例如: ft

紧急求助:linux vsftpd虚拟用户能上传、下载文件,没有删除权限

问题描述 紧急求助:linux vsftpd虚拟用户能上传.下载文件,没有删除权限 SELinux设置为disable了,文件属主是virtural(virtual是虚拟用户所在的本地用户) 解决方案 写个脚本将文件扫描到就赋予所有权限呢 解决方案二: 把write_enable=yes前面的注释取消试试

怎么用asp.net来上传和下载文件啊

问题描述 怎么用怎么用asp.net来上传和下载文件啊 解决方案 解决方案二:找本asp.net入门书看看.上传文件大概需要3.4行代码.而下载文件只要2.3行代码就够了.解决方案三:<form><inputtype="file"name="file"id="file"><inputtype="submit"value="submit"></form>后台用r