从Skydrive下载大文件到Windows Phone 7

时间:2012-06-22 18:33:21

标签: windows-phone-7 onedrive

我在SkyDrive下载过程中遇到了一些问题,并希望您能帮助我。

遵循标准SkyDrive API&例如,我已经设置了一个浏览SkyDrive文件夹结构的页面,让用户点击一个文件,提示下载,一切正常。

我遇到的问题是当下载的文件很大时,我会在100Mb标记处抛出OutOfMemoryException。

Dennis在http://dotnet.dzone.com/articles/2-things-you-should-consider谈到这个问题,但它与直接的URL下载有关,而不是通过SkyDrive架构。

我尝试从SkyDrive中提取URL并以这种方式直接下载,但没有取得任何成功。

这是我正在使用的代码 - “item”对象是SkyDriveItem类型,已遍历文件夹内容并选择了此文件。

LiveConnectClient downloadClient = new LiveConnectClient(App.Session);
                    try
                    {
                        downloadClient.DownloadCompleted += new EventHandler<LiveDownloadCompletedEventArgs>(downloadClient_DownloadCompleted);
                        downloadClient.DownloadProgressChanged += new EventHandler<LiveDownloadProgressChangedEventArgs>(downloadClient_DownloadProgressChanged);
                        downloadClient.DownloadAsync(item.ID + "/content", item);

当文件不是太大时,这将正常工作,但如上所述,选择一个大文件(&gt; 100Mb),它会因OutOfMemory异常而死亡。

任何指针?

提前致谢

1 个答案:

答案 0 :(得分:2)

已解决 - 虽然我从未能够使用downloadClient.DownloadAsync()方法下载大文件,但使用downloadClient.getAsync()并通过常规Stream下载程序使用预认证URL可以解决问题。