BackgroundDownloader с отключенной настройкой фоновых приложений
У меня есть приложение UWP для Windows 8.1, которое использует BackgroundDownloader для загрузки картинок. Мне нужно иметь возможность загружать, даже когда приложение было приостановлено. Приложение работает в Windows 8 и Windows 10. В Windows 10 можно отключить фоновые задачи (Настройки -> Конфиденциальность -> Фоновые приложения). Если моему приложению запрещено использовать фоновые задачи, загрузка никогда не будет завершена.
Я попытался использовать BackgroundExecutionManager.GetAccessStatus(), чтобы определить текущие разрешения и переключиться на HttpClient, если разрешения были отключены. Я столкнулся с двумя проблемами:
- Я могу получить текущее состояние только перед загрузкой. Я не нашел способа получить уведомление или что-то из системы, что настройки были изменены.
- В Windows 8 вызов этого метода вызывает сбой приложения.
Итак, у меня есть 2 вопроса:
- Есть ли способ использовать BackgroundDownloader, когда настройка фоновых приложений в Windows 10 отключена? (Хочу заметить, что тот же код в приложении Windows 10 UWP работает даже при отключенной настройке).
- Есть ли способ, который работает должным образом в 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);
}
}