您的位置:首页 > 理论基础 > 计算机网络

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

2012-08-31 14:05 1946 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: