【发布时间】:2018-12-02 17:17:58
【问题描述】:
我有一个后台任务,该任务当前在我的应用程序启动且当前未运行时启动。但如果可能的话,我希望它也能在启动时启动。我查看了触发器,似乎没有一个可以让它在启动时启动。根据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();,所以我的启用/禁用滑块继续工作。
【问题讨论】:
-
@HansPassant 任务是否仅在尚未运行时触发?例如,如果我让一台电脑休眠,任务将在我唤醒它后继续运行。那么这不算作 SessionConnected 吗?
-
@HansPassant 让我无法使用当前的触发器
-
StartupTask类用于将您的应用配置为在登录时启动。请描述一下你的实际使用场景,看看你是否真的需要使用StartupTask。 -
@XavierXie-MSFT 我更新了我的帖子来解释我的使用场景。
-
后台任务由单独的进程 (backgroundtaskhost.exe) 控制,而不是您的应用程序。它并不总是在运行。它只有在满足某些条件或触发触发器时才会开始执行。
标签: c# uwp desktop-bridge