Вызов 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 - это ответ.

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