我正在创建一个
Windows 10 UWP应用程序,其中涉及BackgroundDownloader,这只适用于桌面而不是手机.
码:
var dl = new BackgroundDownloader(); dl.CostPolicy = BackgroundTransferCostPolicy.Always; file = await localSoundsFolder.CreateFileAsync(name,CreationCollisionOption.ReplaceExisting); if (file != null) { var d = dl.CreateDownload(new Uri(uriToDownloadFrom,UriKind.RelativeOrAbsolute),file); d.Priority = BackgroundTransferPriority.High; var progressCallback = new Progress<DownloadOperation>(x => DownloadProgress(x,sc)); try { await d.StartAsync().AsTask(cancellationToken.Token,progressCallback); //After this line it doesn't progress! CancellationTokenSource token = Utility.cancellationList[sc]; if (token != null) { token.Cancel(); Utility.cancellationList.Remove(sc); Debug.WriteLine("The sc has been removed from the download list"); } } catch { return; } } private static void DownloadProgress(DownloadOperation download,SoundClass sc) { Debug.WriteLine("Callback"); var value = download.Progress.BytesReceived * 100 / download.Progress.TotalBytesToReceive; Debug.WriteLine("The bytesReceived is {0} and total bytes is {1}",download.Progress.BytesReceived.ToString(),download.Progress.TotalBytesToReceive.ToString()); new System.Threading.ManualResetEvent(false).WaitOne(10); sc.downloadProgress = value; if (download.Progress.Status == BackgroundTransferStatus.Completed || value >= 100) { Debug.WriteLine("DONE donwloading the file {0}",download.ResultFile.Name); Debug.WriteLine("The file name happened to be to be added was " + download.ResultFile.Name); string fileName = download.ResultFile.Name; } }
行等待d.StartAsync().AsTask(cancellationToken.Token,progressCallback);该计划不进行.而且也没有错误.这不仅适用于手机在桌面上完美运行!我错过了什么?
解决方法
BackgroundDownloader和我认为Windows UWP中的所有BackgroundTasks都难以使用它们. 您必须首先在当前解决方案中创建一个新的解决方案作为Windows运行时组件. 之后,您必须通过Package.AppxManifest链接它. 呃,不要忘记将运行时组件作为主项目的参考. 如果你做这些事情,希望它必须是有效的.但请确保您有一个RuntimeComponent并将其链接到您的项目中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。