Windows phone 8.1 使用WP8.1上的OneDrive API监控下载进度的最佳方法?

Windows phone 8.1 使用WP8.1上的OneDrive API监控下载进度的最佳方法?,windows-phone-8.1,onedrive,Windows Phone 8.1,Onedrive,我有一个WP8.1应用程序,使用新的OneDrive API。我使用了提供的C#SDK,因此得到了如下结果: var dlStream = await Connection.DownloadStreamForItemAsync(mNode.ItemReference(), StreamDownloadOptions.Default); file = await folder.CreateFile

我有一个WP8.1应用程序,使用新的
OneDrive API
。我使用了提供的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);
response = await GetHttpResponseAsync(request);
var responseStream = await response.GetResponseStreamAsync();
我还没有试过,但这似乎是正确的方法。我现在关心的是“如何监控转移进度和状态?”

知道DownloadStreamForItemAsync方法执行以下操作:

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);
response = await GetHttpResponseAsync(request);
var responseStream = await response.GetResponseStreamAsync();
我曾经考虑过使用计时器,每秒钟检查一次流的长度,但是

  • 我不知道这是否是正确的方法,也不知道是否有其他的方法

  • 我不知道这是否会为流创建一些跨线程错误

  • 如何检测传输失败

  • 我想其中一种方法是部分重写OneDrive SDK portable项目,只针对WinRT项目,并使用Windows.Web对象而不是System.Net,但似乎需要一些工作才能获得不确定的结果

    有什么帮助吗?:)

    您可以在
    livesdk
    中使用该类,而不是将文件作为流下载并保存到文件中

  • 使用该方法下载文件

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

  • 订阅活动

    在文件从Microsoft OneDrive下载到Windows Phone隔离存储时在不确定时间引发。[仅限Windows Phone]



  • 希望有帮助

    你好,谢谢你的回答。我仍然在这个问题上。我决定不使用LiveSDK,而是坚持使用新的OneDrive API。它可能要复杂得多,但LiveSDK不适合我的需要。