zoukankan      html  css  js  c++  java
  • WPF 下载网络文件 带进度条

     

    使用
            private void Button_Click_1(object senderRoutedEventArgs e)
            {
                string url = "http://files.cnblogs.com/xe2011/WpfApplication1_webbrowser_transparent.rar";
                bool b =DownloadFile(url@"D:AdministratorDesktop123.7z"progressBar1label1);
                if (b)
                    MessageBox.Show("下载成功");
                else
                    MessageBox.Show("下载失败");
            }
     

            public bool DownloadFile(string URLstring fileNameSystem.Windows.Controls.ProgressBar progressBar1)
            {
                try
                {
                    System.Net.HttpWebRequest httpWebRequest1 = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
                    System.Net.HttpWebResponse httpWebResponse1 = (System.Net.HttpWebResponse)httpWebRequest1.GetResponse();
     
                    long totalLength = httpWebResponse1.ContentLength;
                    if (progressBar1 != null)
                    {
                        progressBar1.Maximum = (int)totalLength;
                    }
                    System.IO.Stream stream1 = httpWebResponse1.GetResponseStream();
                    System.IO.Stream stream2 = new System.IO.FileStream(fileNameSystem.IO.FileMode.Create);
                    
                    long currentLength = 0;
                    byte[] by = new byte[1024];
                    int osize = stream1.Read(by, 0, (int)by.Length);
                    while (osize > 0)
                    {
                        WpfApplication.DispatcherHelper.DoEvents();
                        
                        currentLength = osize + currentLength;
                        stream2.Write(by, 0, osize);
                        if (progressBar1 != null)
                        {
                            progressBar1.Value = (int)currentLength;
                            label1.Content = String.Format("{0} / {1}"BytesToString(currentLength), BytesToString(totalLength));
                        }
                        osize = stream1.Read(by, 0, (int)by.Length);
                    }
                    
                    stream2.Close();
                    stream1.Close();
     
                    return (currentLength == totalLength); 
                }
                catch 
                {
                    return false;
                }
            }





    附件列表

  • 相关阅读:
    解决input 输入框频繁请求问题,如果拿取最后一次接口返回的值
    记录两个小问题
    axios 如何取消请求
    给vue组件绑定原生事件
    Vue3 与 Vue2的不同之处一 简单介绍 Vue 核心最基本的功能
    js将数组对象中,以某个值相同的对象合并成一个;即把某个值相同的对象内容合并成一个
    postcss-preset-env
    webpack5 tree shaking
    深拷贝
    webpack 性能优化
  • 原文地址:https://www.cnblogs.com/xe2011/p/3761963.html
Copyright © 2011-2022 走看看