c# HttpClient上传和下载的进度显示问题

2 篇文章 0 订阅

WebClient中有DownloadProgressChangedEventHandler等事件可以响应http请求(或者其他web请求)的进度。

在c# 5.0中,HttpClient的函数都是以Task异步函数存在,没有事件可以回调显示上传或下载的进度。

我找了很久,终于发现ProgressMessageHandler 可以解决这个问题,链接:http://msdn.microsoft.com/en-us/library/system.net.http.handlers.progressmessagehandler(v=vs.108).aspx


具体示例代码

               HttpClientHandler hand = new HttpClientHandler();
                ProgressMessageHandler processMessageHander = new ProgressMessageHandler(hand);
                HttpClient localHttpClient = new HttpClient(processMessageHander);

                HttpRequestMessage httpRequestMessage = new HttpRequestMessage();

                httpRequestMessage.Method = HttpMethod.Put;
                httpRequestMessage.Content = new StreamContent(content);

                //for upload

                processMessageHander.HttpSendProgress += (sender, e) =>
                {
                    int num = e.ProgressPercentage;     //you can use HttpProgressEventArgs e 


                };

                //for download

               // processMessageHander.HttpReceiveProgress += (sender, e) =>
              //   {
               //      int num = e.ProgressPercentage;

              //   };

                HttpResponseMessage test = await localHttpClient.SendAsync(httpRequestMessage);

                // dispose the resource 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值