我想在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 ...
假设HttpClient
(和基础网络堆栈)没有缓冲,您应该可以通过覆盖HttpContent.SerializeToStreamAsync
来做到这一点。您可以执行以下操作: