如何在Xamarin.Forms应用程序中获得WebClients进度

时间:2018-10-09 11:48:24

标签: xamarin.forms webclient .net-standard

我正在尝试在Xamarin.Forms应用程序中下载文件(从Azure Blob存储FWIW),基本上使用以下代码

WebClient client = new WebClient();
client.DownloadProgressChanged += (sender, args) => Debug.WriteLine(args.ProgressPercentage);
await client.DownloadDataTaskAsync(new Uri("https://<storage account>.blob.core.windows.net/<container>/<file>"));

(简化为MCVE,实际代码稍微复杂一些)。已下载文件并调用了WebClient.DownloadProgressChanged的处理程序,但只要下载未完成,ProgressPercentage始终为0

首先,我认为Azure根本没有报告文件的总大小,这将使行为完全可以接受(的确是不可避免的),但最终我发现,文件的总大小实际上是 报告。使用LinqPad中的代码段产生了预期的行为,即进度已正确报告。

在我们开发的平台(iOS和Android)上,行为是相同的,并且为iOS选择不同的本机HTTP客户端实现也无济于事。 WebClient所调用的项目是一个.NET Standard项目,如果这很重要的话。

我没有在线找到有关此行为的任何信息。是否有任何解决方案或变通办法可以使我显示 WebClient 的正确进度?

编辑:

直接从iOS调用代码也无济于事,因此,我不认为这与.NET Standard有关。

0 个答案:

没有答案