WebClient的异步处理

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class Download
    {
        object LockObject = new object();

        public static void Main(string[] args)
        {
            var url = "http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-client-community-6.0.11-0.sles10.i586.rpm";

            new Download().Run(url);
        }

        void Run(string url)
        {
            var wc = new WebClient();

            wc.DownloadProgressChanged += (sender, e) =>
            {
                if (Monitor.IsEntered(LockObject))
                {
                    return;
                }
                Monitor.Enter(LockObject);
                var left = Console.CursorLeft;
                for (int i = 0; i < left; i++)
                {
                    Console.Write('\b');
                }

                var display = e.BytesReceived.ToString() + "/" + e.TotalBytesToReceive.ToString() + "\t" + e.ProgressPercentage + "%";

                Console.Write(display);
                Monitor.Exit(LockObject);
            };

            wc.DownloadDataCompleted += (object sender, DownloadDataCompletedEventArgs e) =>
            {
                Console.WriteLine();
                Console.WriteLine("Finish");
            };
            Console.WriteLine("Start");
            wc.DownloadDataAsync(new Uri(url));
            while (wc.IsBusy)
            {
                Thread.Sleep(1000);
            }
            
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值