C# Winform下载文件并显示进度条

本来是要研究怎样判断下载完成,结果找到这个方法,可以在这个方法完成之后提示下载完成。

代码如下:
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;

namespace  WinShowDown
{
    
public   partial   class  FrmMain : Form
    {
        
public  FrmMain()
        {
            InitializeComponent();
        }

        
private   void  btnDown_Click( object  sender, EventArgs e)
        {
            DownloadFile(
" http://localhost:1928/WebServer/downloader/123.rar " @" C:\123.rar " , progressBar1, label1);
        }
        
///   <summary>         
        
///  c#,.net 下载文件        
        
///   </summary>         
        
///   <param name="URL"> 下载文件地址 </param>        
        
///  
        
///   <param name="Filename"> 下载后的存放地址 </param>         
        
///   <param name="Prog"> 用于显示的进度条 </param>         
        
///  
         public   void  DownloadFile( string  URL,  string  filename, System.Windows.Forms.ProgressBar prog, System.Windows.Forms.Label label1)
        {
            
float  percent  =   0 ;
            
try
            {
                System.Net.HttpWebRequest Myrq 
=  (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
                System.Net.HttpWebResponse myrp 
=  (System.Net.HttpWebResponse)Myrq.GetResponse();
                
long  totalBytes  =  myrp.ContentLength;
                
if  (prog  !=   null )
                {
                    prog.Maximum 
=  ( int )totalBytes;
                }
                System.IO.Stream st 
=  myrp.GetResponseStream();
                System.IO.Stream so 
=   new  System.IO.FileStream(filename, System.IO.FileMode.Create);
                
long  totalDownloadedByte  =   0 ;
                
byte [] by  =   new   byte [ 1024 ];
                
int  osize  =  st.Read(by,  0 , ( int )by.Length);
                
while  (osize  >   0 )
                {
                    totalDownloadedByte 
=  osize  +  totalDownloadedByte;
                    System.Windows.Forms.Application.DoEvents();
                    so.Write(by, 
0 , osize);
                    
if  (prog  !=   null )
                    {
                        prog.Value 
=  ( int )totalDownloadedByte;
                    }
                    osize 
=  st.Read(by,  0 , ( int )by.Length);

                    percent 
=  ( float )totalDownloadedByte  /  ( float )totalBytes  *   100 ;
                    label1.Text 
=   " 当前补丁下载进度 "   +  percent.ToString()  +   " % " ;
                    System.Windows.Forms.Application.DoEvents(); 
// 必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
                }
                so.Close();
                st.Close();
            }
            
catch  (System.Exception)
            {
                
throw ;
            }
        }
    }
}
源码下载: http://revit.5d6d.com/thread-997-1-1.html  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值