使用C#Httpclient从异步GET获取下载进度/当前下载的字节数

时间:2014-11-21 20:46:46

标签: c# asynchronous xamarin httpclient

我正在尝试使用System.Web.Http的httpclient获取Xamarin中表示的一些下载进度。我理解在典型的情况下,使用HEAD请求提前获取文件大小并检查相关文件的内容长度。我不明白的是如何获取当前传输的文件大小,以便我可以将其与总数进行比较。

这可能吗?我已经四处寻找其他示例,但他们似乎正在使用WebClient或其他类似的。

编辑:

submitButton.Clicked += async (object sender, EventArgs e) => {
var client = new HttpClient();

var url = (Just making use of a sizable wallpaper here as example.);

var result = await client.GetStreamAsync(url);
}

如果我等待上面的GetStreamAsync,那么在完成之前我不能对流执行任何操作。如果我删除await并尝试使用Task结果,则会发生同样的事情 - 即使尝试获取长度也无法工作,直到完成整个事情。

显然,如果我可以在写入流时到达流,我可以检查长度(希望如此)并将其与头信息进行比较。但是如何访问中间转移,我没有。

1 个答案:

答案 0 :(得分:0)

不幸的是,到目前为止,我能够找到的最佳解决方案是使用Webclient代替httpclient"。我还没有能够在Xamarin中给Webclient一个机会,希望它可以在那里工作,但我设法在PC上以直接的方式使用它。