UWP中的进程内后台任务
在我的UWP项目中,我使用进程内后台任务。在不同情况下,任务每15分钟通过计时器触发器运行一次: 案例1:当应用程序运行时-在这种情况下,所有的工作都正常 案例2:应用程序关闭时-只要应用程序仍然关闭,就不会发生任何事情 请帮我解决这个问题好吗 代码: //这是我的背景任务。运行方法UWP中的进程内后台任务,uwp,uwp-xaml,windows-community-toolkit,Uwp,Uwp Xaml,Windows Community Toolkit,在我的UWP项目中,我使用进程内后台任务。在不同情况下,任务每15分钟通过计时器触发器运行一次: 案例1:当应用程序运行时-在这种情况下,所有的工作都正常 案例2:应用程序关闭时-只要应用程序仍然关闭,就不会发生任何事情 请帮我解决这个问题好吗 代码: //这是我的背景任务。运行方法 var deferral = taskInstance.GetDeferral(); if (!IsApplicationClosed) { //When application is running
var deferral = taskInstance.GetDeferral();
if (!IsApplicationClosed)
{
//When application is running
await Dispatcher.RunAsync(WCoreDispatcherPriority.Normal, () => {
UpdateUI();
});
}
else
{
UpdateDataStorage();
}
deferral.Complete();
//这是我的背景激活方法
base.OnBackgroundActivated(args);
var deferral = args.TaskInstance.GetDeferral();
switch (args.TaskInstance.Task.Name)
{
case "MyBackgroundTask":
{
var task = new MyBackgroundTask();
task.Run(args.TaskInstance);
} break;
};
deferral.Complete();
谢谢。我认为因为您使用的是进程内后台任务,后台TAK和您的应用程序在同一进程上运行,所以当您关闭应用程序时,后台任务将关闭。如果您使用进程外后台任务可以解决此问题,此链接可帮助您构建进程外后台TAK:
没有足够的信息(或代码)来回答此问题。您是否确认OnBackgroundActivated事件确实没有被触发?您可以添加一些日志记录或从那里弹出一个祝酒词来测试它。您是否允许应用程序在您的设置中在后台运行?您是否确认OnBackgroundActivated在后台情况下不会被调用(例如,使用日志记录)-并且您的代码不会过早崩溃或退出?例如,如果您的“IsApplicationClosed”不是您认为的那样,那么代码将在试图分派到UI线程时崩溃。另外,如果“UpdatedTestOrage”是一个异步方法,那么您将在该方法有机会完成之前完成延迟并退出该过程。问题是及时触发的,有时是在BackgroundActivated方法上激活的,有时不是。当我试图从生命周期事件中调试VisualStudio中的后台任务时,它在这两种情况下都会按预期工作。