如何使用BackroundTransfer将文件下载到KnownFolder?

时间:2015-03-02 07:21:25

标签: c# windows-runtime windows-phone-8.1 win-universal-app

我在Windows Phone 8.1 RT上测试BackgroundTransfer,当我尝试将文件下载到其中一个 KnownFolders 时,我遇到了一个奇怪的问题。< / p>

代码如下:

string address = @"http://www.onereason.org/archive/wp-content/uploads/2012/02/universe.jpg";
StorageFile tempFile = await KnownFolders.PicturesLibrary.CreateFileAsync("temp.jpg", CreationCollisionOption.ReplaceExisting);
BackgroundDownloader manager = new BackgroundDownloader();
var operation = manager.CreateDownload(new Uri(address), tempFile);
IProgress<DownloadOperation> progressH = new Progress<DownloadOperation>((p) =>
{ Debug.WriteLine("Transferred: {0}, Total: {1}", p.Progress.BytesReceived, p.Progress.TotalBytesToReceive); });
await operation.StartAsync().AsTask(progressH);
Debug.WriteLine("BacgroundTransfer created");

如果我下载到 ApplicationData.Current.LocalFolder ,它非常简单并且可以,但如果我像上面那样,传输永远不会完成, progresshandler表示已收到所有字节:

transferred

代码永远不会到达Debug.WriteLine("BacgroundTransfer created");行,如果我看一下手机上的proccesses,我可以看到 RuntimeBroker 正在使用100%的CPU:

runtimebroker

显然,在您完成应用程序的调试后,它也会继续工作,手机会变得更热,更热。取消此情况的最快方法是卸载应用程序,因为此操作将取消所有相应的后台传输。

正在制定所有必要的能力。我可以将文件下载到 LocalFolder ,然后复制到 KnownFolder ,但它还有额外的冗余操作。有没有办法直接将文件下载到 KnownFolder ?我错过了什么吗?

0 个答案:

没有答案