如何使Backgroundtask在启动时启动?

时间:2018-12-02 17:17:59

标签: c# uwp desktop-bridge

我有一个后台任务,该任务当前在我的应用程序启动且当前未运行时启动。但是,我希望它也可以在启动时开始。我已经研究了触发器,似乎没有一个可以使它在启动时启动。根据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();,这样我的启用/禁用滑块才能正常工作。

1 个答案:

答案 0 :(得分:1)

正如一些评论所指出的,您应该使用TriggerT = SessionConnected的SystemTrigger在用户登录时启动任务。您仍然可以随时使用ApplicationTrigger从前台应用程序触发任务。您可以使用相同的入口点使用两个或多个触发器,以触发相同的任务实现。实际上,为了使这种情况更完整,您还希望添加SystemTriggerType = PowerChanged触发器以涵盖电源/睡眠状态更改。