如何让我的后台任务在启动时启动?

How do I make my Backgroundtask start on Startup?

我有一个后台任务,当前在我的应用程序启动时启动,但目前没有 运行。但如果可能的话,我希望它也能在启动时启动。我查看了触发器,似乎有 none 可以让它在启动时启动。根据 MSDN 有一种方法可以创建启动任务,但他们没有说如何将我当前的任务转换为启动任务。这甚至可能吗:

<uap5:Extension Category="windows.startupTask">
  <uap5:StartupTask
    TaskId="MyStartupId"
    Enabled="true"
    DisplayName="Background-Keyboard task" />
</uap5:Extension> //Documentation

<Extension Category="windows.backgroundTasks" EntryPoint="Background.BackgroundTask">
  <BackgroundTasks>
    <Task Type="systemEvent" />
  </BackgroundTasks>
</Extension> //My task

我目前这样开始我的任务:

var builder = new BackgroundTaskBuilder();

builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.BackgroundTask";

ApplicationTrigger _AppTrigger = new ApplicationTrigger();
builder.SetTrigger(_AppTrigger);


builder.Register();

await _AppTrigger.RequestAsync();

编辑:我想要这个的原因:

我的应用程序提供了可以打开和关闭的后台服务。它应该一直是 运行,并且在我打开应用程序后确实有效。但是应该没有必要在每次设备重启时都打开它——目前就是这样,我想增加让后台服务在启动时启动的可能性。理想情况下,我还想保持当前的启动方式 - 通过 _AppTrigger.RequestAsync();,这样我的 enable/disable 滑块就会继续工作。

正如一些评论已经指出的那样,您应该使用 TriggerType=SessionConnected 的 SystemTrigger,以便在用户登录时启动任务。您仍然可以在需要时使用 ApplicationTrigger 从前台应用程序触发任务。您可以有两个或多个具有相同入口点的触发器,触发相同的任务实现。事实上,为了使这个场景完整,你还想添加一个 SystemTriggerType=PowerChanged 触发器来覆盖 power/sleep 状态变化。