博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF下载远程文件,并显示进度条和百分比
阅读量:6231 次
发布时间:2019-06-22

本文共 2798 字,大约阅读时间需要 9 分钟。

WPF下载远程文件,并显示进度条和百分比

1、xaml

 2、CS程序

using System;using System.Windows;using System.Windows.Controls;using System.Net;using System.IO;using System.Threading;using System.Drawing;namespace WpfDemo{    ///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            if (HttpFileExist("http://183.62.138.31:57863/opt/resources/%E9%A3%8E%E6%99%AF/f1.jpg"))            {                DownloadHttpFile("http://183.62.138.31:57863/opt/resources/%E9%A3%8E%E6%99%AF/f1.jpg", @"d:\f1.jpg");            }        }        public void DownloadHttpFile(String http_url, String save_url)        {            WebResponse response = null;            //获取远程文件            WebRequest request = WebRequest.Create(http_url);            response = request.GetResponse();            if (response == null) return;            //读远程文件的大小            pbDown.Maximum = response.ContentLength;            //下载远程文件            ThreadPool.QueueUserWorkItem((obj) =>            {                Stream netStream = response.GetResponseStream();                Stream fileStream = new FileStream(save_url, FileMode.Create);                byte[] read = new byte[1024];                long progressBarValue = 0;                int realReadLen = netStream.Read(read, 0, read.Length);                while (realReadLen > 0)                {                    fileStream.Write(read, 0, realReadLen);                    progressBarValue += realReadLen;                    pbDown.Dispatcher.BeginInvoke(new ProgressBarSetter(SetProgressBar), progressBarValue);                    realReadLen = netStream.Read(read, 0, read.Length);                }                netStream.Close();                fileStream.Close();            }, null);        }                ///         ///  判断远程文件是否存在        ///         /// 文件URL        /// 
存在-true,不存在-false
private bool HttpFileExist(string http_file_url) { WebResponse response = null; bool result = false;//下载结果 try { response = WebRequest.Create(http_file_url).GetResponse(); result = response == null ? false : true; } catch (Exception ex) { result = false; } finally { if (response != null) { response.Close(); } } return result; } public delegate void ProgressBarSetter(double value); public void SetProgressBar(double value) { //显示进度条 pbDown.Value = value; //显示百分比 label1.Content = (value / pbDown.Maximum) * 100 + "%"; } }}

 

转载地址:http://aaqna.baihongyu.com/

你可能感兴趣的文章
如何利用UIScrollView写一个多选ScrollView
查看>>
Hadoop 2.0集群配置详细教程
查看>>
window10下docker使用
查看>>
windows zookeeper启动报JAVA_HOME is incorrect set
查看>>
Left Outer Join using + sign in Oracle 11g
查看>>
WebService Transaction
查看>>
linux查看与开启sshd服务
查看>>
技术文库项目的最新浏览记录和记住登录状态的COOKIE加密存储
查看>>
mysql 8远程访问
查看>>
PrintStream 和 PrintWriter的区别
查看>>
【设计模式】——工厂方法FactoryMethod
查看>>
Java面试题之一 (转)
查看>>
小心 php fpm 的超时
查看>>
error LNK2001: 无法解析的外部符号 __CrtDbgReport
查看>>
2013年Android 学习计划
查看>>
按值传递和按引用传递
查看>>
捕获按钮点击事件
查看>>
认真,是成功的重要因素
查看>>
第3章 概述
查看>>
一张图看懂 Hadoop RPC 机制
查看>>