我有一个后台任务,该任务当前在我的应用程序启动且当前未运行时启动。但是,我希望它也可以在启动时开始。我已经研究了触发器,似乎没有一个可以使它在启动时启动。根据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();
,这样我的启用/禁用滑块才能正常工作。
答案 0 :(得分:1)
正如一些评论所指出的,您应该使用TriggerT = SessionConnected的SystemTrigger在用户登录时启动任务。您仍然可以随时使用ApplicationTrigger从前台应用程序触发任务。您可以使用相同的入口点使用两个或多个触发器,以触发相同的任务实现。实际上,为了使这种情况更完整,您还希望添加SystemTriggerType = PowerChanged触发器以涵盖电源/睡眠状态更改。