c# HttpClient上傳和下載的進度顯示問題
WebClient中有DownloadProgressChangedEventHandler等事件可以響應http請求(或者其他web請求)的進度。
在c# 5.0中,HttpClient的函式都是以Task非同步函式存在,沒有事件可以回撥顯示上傳或下載的進度。
具體示例程式碼
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