c# – BackgroundDownloader不适用于Windows 10移动UWP?

前端之家收集整理的这篇文章主要介绍了c# – BackgroundDownloader不适用于Windows 10移动UWP?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个 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并将其链接到您的项目中

猜你在找的C#相关文章