WPF 动态进度条

该代码段展示了如何使用C#的HttpWebRequest和HttpWebResponse进行文件下载,并实现下载进度的实时更新和异常处理。它通过FileStream逐块读取并写入文件,同时提供进度条反馈和异常信息显示。
摘要由CSDN通过智能技术生成

        /// <summary>
        /// 下载文件 ———— 软件更新包
        /// </summary>
        /// <param name="URL">下载文件地址</param>
        /// <param name="filename">存放地址</param>
        /// <returns></returns>
        public bool DownloadFile(string URL, string filename)
        {
            float percent = 0;
            try
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                //获取请求返回的内容长度
                long totalBytes = response.ContentLength;
                long totalDownloaded = 0;

                byte[] b = new byte[1024];
                Stream responseStream = response.GetResponseStream();
                //读取字节流
                int osize = responseStream.Read(b, 0, b.Length);

                FileStream fs = new FileStream(filename, FileMode.Create);

                while (osize > 0)
                {
                    totalDownloaded = osize + totalDownloaded;
                    //为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象
                    //不然label1将由于循环执行太快而来不及显示信息
                    System.Windows.Forms.Application.DoEvents();
                    fs.Write(b, 0, osize);
                    percent = (float)(totalDownloaded / (float)totalBytes) * 100;

                    osize = responseStream.Read(b, 0, b.Length);

                    progressBar.Value = (int)percent;
                    label1.Content = "下载中(" + progressBar.Value + "%)";
                    System.Windows.Forms.Application.DoEvents();
                }
                label1.Content = "下载成功!";
                label1.Foreground = Brushes.Green;

                return true;
            }
            catch (Exception ex)
            {
                label1.Content = "下载异常,已停止下载:名称" + URL.Split('_')[1].ToString() + "异常信息:" + ex.Message;
                return false;
            }
        }

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值