Вызов WebApi из BackgroundTask в приложении UWP компонента Windows 10 RunTime
Я успешно могу вызвать Web Api, развернутый по ссылке ниже, из мобильного приложения или консольного приложения. https://dposapi.azurewebsites.net/DPosApi/v1/Configurations/GetAll
Проблема заключается в том, что когда я помещаю этот вызов в BackgroundTask в проект компонента RunTime и запускает фоновое задание из мобильного приложения, то выполнение останавливается на строке кода, где я вызываю Web Api. Образец доступен по ссылке ниже.
https://github.com/imranshabbir/Sample
В чем может быть проблема?
Благодарю.
1 ответ
Ваш метод запуска должен быть асинхронным, например так: (обратите внимание на ожидание перед FillProducts ())
public async void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferal = taskInstance.GetDeferral();
// do your task here
await FillProducts();
deferal.Complete();
}
Btw. Вы уверены, что
"выполнение зависает в строке кода, где я вызываю веб-API"
?
В вашем текущем коде проблема заключается в том, что фоновая задача завершена до того, как вы получите результаты (без ожидания, когда выполнение попадет в deferal.Complete();
линия раньше). Так что в этом случае вы просто не видите результаты, но это не должно быть зависанием.
Но в любом случае... async/await - это ответ.