zoukankan      html  css  js  c++  java
  • C#下载文件(可显示进度)的方法实现

    在做WIN FORM程序中经常要使用到升级功能,就需要从服务器上下载最新扔软件程序。如何下载呢?代码实现如下:

            /// <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://www.cnblogs.com/Slxj/archive/2011/08/21/2147672.html

  • 相关阅读:
    使用FluentScheduler和IIS预加载在asp.net中实现定时任务管理
    [WCF REST] Web消息主体风格(Message Body Style)
    [WCF REST] Web消息主体风格(Message Body Style)
    REST WCF Service中的WebMessageBodyStyle
    REST WCF Service中的WebMessageBodyStyle
    C#表示空字符
    053517
    053516
    053515
    053514
  • 原文地址:https://www.cnblogs.com/Areas/p/2584254.html
Copyright © 2011-2022 走看看