BackgroundDownloader с отключенной настройкой фоновых приложений

У меня есть приложение UWP для Windows 8.1, которое использует BackgroundDownloader для загрузки картинок. Мне нужно иметь возможность загружать, даже когда приложение было приостановлено. Приложение работает в Windows 8 и Windows 10. В Windows 10 можно отключить фоновые задачи (Настройки -> Конфиденциальность -> Фоновые приложения). Если моему приложению запрещено использовать фоновые задачи, загрузка никогда не будет завершена.

Я попытался использовать BackgroundExecutionManager.GetAccessStatus(), чтобы определить текущие разрешения и переключиться на HttpClient, если разрешения были отключены. Я столкнулся с двумя проблемами:

  1. Я могу получить текущее состояние только перед загрузкой. Я не нашел способа получить уведомление или что-то из системы, что настройки были изменены.
  2. В Windows 8 вызов этого метода вызывает сбой приложения.

Итак, у меня есть 2 вопроса:

  1. Есть ли способ использовать BackgroundDownloader, когда настройка фоновых приложений в Windows 10 отключена? (Хочу заметить, что тот же код в приложении Windows 10 UWP работает даже при отключенной настройке).
  2. Есть ли способ, который работает должным образом в Windows 8 и 10, чтобы определить состояние настройки фоновых приложений и реагировать, если оно было изменено?

Я использую код как

        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 ответов

Другие вопросы по тегам