BackgroundDownloader与后台应用程序设置关闭

时间:2018-03-22 13:07:28

标签: c# uwp background-task background-transfer

我有一个UWP Windows 8.1应用程序,它使用BackgroundDownloader来加载图片。即使应用程序被暂停,我也需要能够下载。该应用程序在Windows 8和Windows 10上运行。在Windows 10中,可以禁用后台任务(设置 - >隐私 - >后台应用程序)。如果我的应用程序无法使用后台任务,则永远不会完成下载。

我尝试使用BackgroundExecutionManager.GetAccessStatus()来确定当前权限,并在权限被关闭时切换到HttpClient。我遇到了两个问题:

  1. 我只能在下载之前获得当前状态。我没有找到任何方法来获取通知或系统中某些设置被更改的内容。
  2. 在Windows 8上,调用此方法会导致应用程序崩溃。
  3. 所以我有两个问题:

    1. 当Windows 10中的Background Apps设置关闭时,有没有办法使用BackgroundDownloader? (我想注意,即使设置已关闭,UWP Windows 10应用程序中的相同代码也能正常工作。)
    2. 是否有任何方法可以在Windows 8和10上正常工作以确定后台应用设置状态并在其发生变化时作出反应?
    3. 我使用像

      这样的代码
              var downloader = new BackgroundDownloader();
              var download = downloader.CreateDownload(source, destinationFile);
      
              await HandleDownloadAsync(download, true);
      
              ...
      
          private async Task HandleDownloadAsync(DownloadOperation download, bool start)
          {
              Progress<DownloadOperation> progressCallback = new Progress<DownloadOperation>(DownloadProgress);
              var cts = new CancellationTokenSource();
              cts.CancelAfter(120000);
      
              if (start)
              {
                  await download.StartAsync().AsTask(cts.Token, progressCallback);
              }
              else
              {
                  await download.AttachAsync().AsTask(cts.Token, progressCallback);
              }
          }
      

0 个答案:

没有答案