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

时间:2021-06-13 09:56:54

本来是要研究怎样判断下载完成,结果找到这个方法,可以在这个方法完成之后提示下载完成。
C# Winform下载文件并显示进度条
代码如下:

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 ;
            }
        }
    }
}
C# Winform下载文件并显示进度条

源码下载:http://revit.5d6d.com/thread-997-1-1.html 

From : http://www.cnblogs.com/greatverve/archive/2011/05/17/csharp-down.html