如何让我的后台任务在启动时启动?
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 状态变化。
我有一个后台任务,当前在我的应用程序启动时启动,但目前没有 运行。但如果可能的话,我希望它也能在启动时启动。我查看了触发器,似乎有 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 状态变化。