UWP中的进程内后台任务

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

在我的UWP项目中,我使用进程内后台任务。在不同情况下,任务每15分钟通过计时器触发器运行一次:

案例1:当应用程序运行时-在这种情况下,所有的工作都正常

案例2:应用程序关闭时-只要应用程序仍然关闭,就不会发生任何事情

请帮我解决这个问题好吗

代码: //这是我的背景任务。运行方法

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中的后台任务时,它在这两种情况下都会按预期工作。