我正在创建一个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;
}
}
在行await d.StartAsync().AsTask(cancellationToken.Token,progressCallback);
之后,程序没有继续。而且也没有错误。这不仅适用于手机在桌面上完美运行!我错过了什么?
答案 0 :(得分:0)
BackgroundDownloader,我认为Windows UWP中的所有BackgroundTasks都难以使用它们。 您必须首先在当前解决方案中创建一个新的解决方案作为Windows运行时组件。 之后,您必须通过Package.AppxManifest链接它。 呃,不要忘记将运行时组件作为主项目的参考。 如果你做这些事情,希望它必须是有效的。但请确保您有一个RuntimeComponent,并将其链接到您的项目
答案 1 :(得分:0)
我们在完全相同的问题上苦苦挣扎,但是在通用Windows 10应用程序上 - 而不是手机。我们案例中的罪魁祸首是Windows 10的节电模式。在Windows 10设备上,点击电池图标。这应该会调出电池和屏幕亮度。禁用电池模式。
使用背景下载程序的任何应用程序的效果都相同,包括MSDN下载示例应用程序。
同样,这不是在移动设备上,但它确实在我们的Windows 10应用程序上发生。希望它与手机相似。
答案 2 :(得分:0)
在我的情况下,通过 USB连接线将手机连接到笔记本电脑,相同的代码无法在调试模式下工作,但是通过下载和安装可以正常工作该应用程序处于发布模式。