zoukankan      html  css  js  c++  java
  • 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;
                }
            }
        }
    }
    复制代码

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

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

  • 相关阅读:
    charles安装以及手机端的设置
    ON DUPLICATE KEY UPDATE 用法与说明
    亿级流量架构之网关设计思路、常见网关对比
    灰度发布系统架构设计
    Jmeter 并发测试
    springboot --- Swagger UI初识
    TortoiseGIT 一直提示输入密码的解决方法!
    MySQL 5.6 参数详解
    LVS 轮询调度详解
    MongoDB 权限
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2689303.html
Copyright © 2011-2022 走看看