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
在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
相关文章推荐
- [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- [C#]在WinForm下使用HttpWebRequest上传文件并显示进度[转]
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- [C#]在WinForm下使用HttpWebRequest上传文件并显示进度
- c#在WinForm下使用HttpWebRequest上传文件并显示进度
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- (转)C#在WinForm下使用HttpWebRequest上传文件并显示进度
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度
- C# WebClient上传下载资料问题求助
- [C#]在WinForm下使用HttpWebRequest上传文件并显示进度
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- [C#]在WinForm下使用HttpWebRequest上传文件并显示进度
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- idhttp post 上传或下载时显示进度条
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- [C#]在WinForm下使用HttpWebRequest上传文件并显示进度
- C# WebClient上传下载时进度条显示
- C# HttpClientUtil 工具类 表单请求提交 附件上传下载