在WP8.1上使用OneDrive API监控下载进度的最佳方法是什么?

时间:2015-05-31 01:09:02

标签: windows-phone-8.1 onedrive

我有一个使用新OneDrive API的WP8.1应用。我使用提供的C#SDK,因此得到如下内容:

var dlStream = await Connection.DownloadStreamForItemAsync(mNode.ItemReference(),
                                                   StreamDownloadOptions.Default);
file = await folder.CreateFileAsync(fileName, 
                                CreationCollisionOption.ReplaceExisting).AsTask();

fileStream = (await file.OpenAsync(FileAccessMode.ReadWrite)).AsStream();

var v=dlStream.CopyToAsync(tn.FileStream);

我还没有尝试过,但它似乎是正确的方法。我现在关注的是如何监控转移进度和状态?"

知道DownloadStreamForItemAsync方法是这样的:

response = await GetHttpResponseAsync(request);
var responseStream = await response.GetResponseStreamAsync();

我考虑过使用计时器,每秒检查一次流长度,但是

  1. 如果有替代方式,我不知道这是否是正确的方法

  2. 我不知道这是否可能不会为流创建一些跨线程错误

  3. 如何检测转移失败?

  4. 我猜其中一种方法是重写部分OneDrive SDK可移植项目,仅针对WinRT项目并使用Windows.Web对象而不是System.Net,但似乎是一些不确定结果的工作。

    有任何帮助吗? :)

1 个答案:

答案 0 :(得分:0)

您可以使用Live SDK内的LiveConnectClient类,而不是将文件作为流下载并将其保存到文件中。

  1. 使用BackgroundDownloadAsync(string path, Uri downloadLocation)方法下载文件

      

    开始从Microsoft OneDrive下载文件到Windows Phone   隔离存储。 [仅限Windows Phone]   即使启动文件的应用程序,文件下载仍应继续   下载退出或暂停。

  2. 订阅BackgroundDownloadProgressChanged活动

      

    当文件从Microsoft OneDrive下载到Windows Phone隔离存储时,在不确定的时间升起。 [仅限Windows Phone]


  3. 希望它有所帮助!