来自运行时组件 UWP Windows 10 应用中的 BackgroundTask 的 WebApi 调用

本文关键字:BackgroundTask WebApi 调用 应用 运行时 组件 UWP Windows | 更新日期: 2023-09-27 18:31:36

我成功地从移动应用程序或控制台应用程序调用部署在以下链接上的Web Api。https://dposapi.azurewebsites.net/DPosApi/v1/Configurations/GetAll

问题是,当我将此调用放在运行时组件项目的 BackgroundTask 中并从移动应用程序触发后台任务时,执行将挂起在我调用 Web API 的代码行上。样品可在以下链接中找到。

https://github.com/imranshabbir/Sample

可能是什么问题?

来自运行时组件 UWP Windows 10 应用中的 BackgroundTask 的 WebApi 调用

你的 run 方法应该是异步的,如下所示: (注意 FillProducts() 之前的等待)

public async void Run(IBackgroundTaskInstance taskInstance)
{
        BackgroundTaskDeferral deferal = taskInstance.GetDeferral();
        // do your task here
        await FillProducts();
        deferal.Complete();
}

顺便说一句,你确定

"执行挂在我调用 Web API 的代码行上"

在当前代码中,问题是后台任务在您获得结果之前完成(如果没有 await,执行会更早地命中deferal.Complete();行)。所以在这种情况下,你只是看不到结果,但这不应该是一个挂起。

但无论如何...async/await 就是答案。