从运行时组件 UWP 中的 BackgroundTask 调用 WebApi Windows 10 个 App
WebApi Call from BackgroundTask in RunTime Component UWP Windows 10 App
我能够从移动应用程序或控制台应用程序成功调用部署在 link 下方的 Web Api。
https://dposapi.azurewebsites.net/DPosApi/v1/Configurations/GetAll
问题是,当我将此调用放在运行时组件项目的 BackgroundTask 中并从移动应用程序触发后台任务时,执行挂起在我调用 Web 的代码行 Api。示例可在下方 link.
https://github.com/imranshabbir/Sample
可能是什么问题?
您的 运行 方法应该是异步的,如下所示:(注意 FillProducts() 之前的等待)
public async void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferal = taskInstance.GetDeferral();
// do your task here
await FillProducts();
deferal.Complete();
}
顺便说一句。你确定
"execution hangs on the line of code where i am calling the Web Api"
?
在您当前的代码中,问题是后台任务在您获得结果之前完成(没有等待,执行会更早地到达 deferal.Complete();
行)。所以在那种情况下你只是看不到结果,但这不应该是一个挂起。
但是无论如何...async/await就是答案。
我能够从移动应用程序或控制台应用程序成功调用部署在 link 下方的 Web Api。 https://dposapi.azurewebsites.net/DPosApi/v1/Configurations/GetAll
问题是,当我将此调用放在运行时组件项目的 BackgroundTask 中并从移动应用程序触发后台任务时,执行挂起在我调用 Web 的代码行 Api。示例可在下方 link.
https://github.com/imranshabbir/Sample
可能是什么问题?
您的 运行 方法应该是异步的,如下所示:(注意 FillProducts() 之前的等待)
public async void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferal = taskInstance.GetDeferral();
// do your task here
await FillProducts();
deferal.Complete();
}
顺便说一句。你确定
"execution hangs on the line of code where i am calling the Web Api"
?
在您当前的代码中,问题是后台任务在您获得结果之前完成(没有等待,执行会更早地到达 deferal.Complete();
行)。所以在那种情况下你只是看不到结果,但这不应该是一个挂起。
但是无论如何...async/await就是答案。