我在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表示已收到所有字节:
代码永远不会到达Debug.WriteLine("BacgroundTransfer created");
行,如果我看一下手机上的proccesses,我可以看到 RuntimeBroker 正在使用100%的CPU:
显然,在您完成应用程序的调试后,它也会继续工作,手机会变得更热,更热。取消此情况的最快方法是卸载应用程序,因为此操作将取消所有相应的后台传输。
正在制定所有必要的能力。我可以将文件下载到 LocalFolder ,然后复制到 KnownFolder ,但它还有额外的冗余操作。有没有办法直接将文件下载到 KnownFolder ?我错过了什么吗?