• 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;

                }     

        }

  • 相关阅读:
    【产品】八问
    【设计总结】QQ主题升级
    新冠疫情下的世界是怎么样的?他给我们带来了一份答案
    vue项目实战:vuex板块的考虑和封装
    vue项目实战:directives filters mixins util 内容的封装
    vue项目实战:api管理和封装
    vue项目实战:路由文件的配置
    vue项目实战:项目入口代码展示公共js文件夹内容
    vue项目实战:项目布局和公共文件夹的确定
    vue项目实战:项目搭建使用vue+Es6+webpack+vuex+axios+Element ui完成 文件夹内容的确定
  • 原文地址:https://www.cnblogs.com/zhangruisoldier/p/4905208.html
Copyright © 2020-2023  润新知