HttpClient上传进度栏

问题描述 投票:7回答:1

我想在WPF中使用进度条运行异步上传(最好也将PCL用于Xamarin和SL中的代码重用。)

我一直在尝试使用System.Net.HttpClient。不幸的是,PutAsync不提供任何进度通知。 (我知道它适用于Windows.Web.Http.HttpClient,但这不适用于WPF,也不适用于PCL。)>

对于下载,它很容易实现自己的进度条,如here所述。您只需传递ResponseHeadersRead选项,该选项将在返回标头后立即使该流可用,然后逐块读取它,并随即增加进度条。但是对于上传,此技术不起作用-您需要一次性将所有上传数据传递到PutAsync中,因此没有机会增加您的计数器。

我也想知道如何使用HttpClient.SendAsync。我希望我可以像对待异步HttpWebRequest一样对待它(在其中您可以按照here的描述在写HttpWebRequest.GetRequestStream时增加计数器)。但是不幸的是HttpClient.SendAsync不能为您提供可写的流,因此无法正常工作。

那么HttpClient是否支持通过非阻塞UI和进度栏进行上传?似乎有点需要。还是我应该使用其他课程?非常感谢。

我想在WPF中使用进度条运行异步上传(最好也将PCL用于Xamarin和SL中的代码重用。)我一直在尝试使用System.Net.HttpClient。不幸的是,PutAsync ...

wpf upload progress-bar portable-class-library dotnet-httpclient
1个回答
5
投票

假设HttpClient(和基础网络堆栈)没有缓冲,您应该可以通过覆盖HttpContent.SerializeToStreamAsync来做到这一点。您可以执行以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.