zoukankan      html  css  js  c++  java
  • C# Winform下载文件并显示进度条

     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;

                }     

        }

  • 相关阅读:
    Java基础知识:正则表达式
    NodeJs 中 将表单数据转发到后台
    单片机的远程升级
    一些开源协议
    物联网的一些例子
    python一些开源特色库
    qt练习
    网页编程学习笔记
    PCB相关
    工业控制系统
  • 原文地址:https://www.cnblogs.com/zhangruisoldier/p/4905208.html
Copyright © 2011-2022 走看看