• 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

  • 相关阅读:
    Docker多主机互联
    数据结构
    广度优先算法走出迷宫
    golang反射
    waitGroup的使用
    golang中的mutex锁
    goroutine和channel
    如何优雅的关闭Golang Channel?
    使用context关闭协程以及协程中的协程
    golang对不同系统的编译
  • 原文地址:https://www.cnblogs.com/Areas/p/2584254.html
Copyright © 2020-2023  润新知