c# – BackgroundDownloader不适用于Windows 10移动UWP?
发布时间:2020-12-15 07:52:54 所属栏目:百科 来源:网络整理
导读:我正在创建一个 Windows 10 UWP应用程序,其中涉及BackgroundDownloader,这只适用于桌面而不是手机. 码: var dl = new BackgroundDownloader(); dl.CostPolicy = BackgroundTransferCostPolicy.Always; file = await localSoundsFolder.CreateFileAsync(name
我正在创建一个
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并将其链接到您的项目中
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |