Я разрабатываю приложение UWP, и мне нужно отправить свое местоположение каждые 15 секунд, если текущее состояние приложения активно или приостановлено. Я попробовал два различных подхода:UWP - Фоновая задача - короткий интервал
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
{
await UpdateMethod(data);
});
и
var taskResult = await backgroundTrigger.RequestAsync(taskParameters);
ExtendedExecution
- отлично работает, когда приложение активно
- , когда приложение приостановлено грузоотправитель не доступен
ExtendedExecution + Фоновая Задача + Применение Trigger
- он отлично работает, когда приложение активно
- , когда приложение приостановлено я получаю ApplicationTriggerResult.DisabledByPolicy после вызова метода выше
'частная асинхронная недействительная синхронизации (объект синхронизация) { вара данные = синхронизация в виде строки; если (данные! = NULL) { ждет CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (CoreDispatcherPriority.Normal, асинхронный() => { ждет _dl.UpdateLocation (данные); // точка останова на этой строке никогда не попадает }); } ' Пробовал на 2 таблетки, ПК (10586 и 14393), и это не работает. Я использую ExtendedExecutionReason.LocationTracking. – lijevosmetalo
@ lijevosmetalo Я проверил официальный образец на 14393, он действительно работает. Также проверьте тестовый сценарий 3 и следуйте официальным образцам, чтобы исправить ваш код. Я не могу решить проблему только одной строкой кода. Если у вас все еще есть проблемы, загрузите весь проект размножения, чтобы мы могли вам помочь. –
Оффициальный образец не работает для меня. Попробуйте Сценарий 3 и положите точку останова на строку 140 (или любую строку, которая находится между 140 и 159). Запустите сценарий, а затем приостановите приложение из VS. Сценарий 1, который не использует Dispatcher в методе OnTimer, отлично работает, а сценарий 3 - нет. – lijevosmetalo