我们能否将UWP BackgroundTask(WindowsRuntimeComponent)作为Windows服务托管?

时间:2016-10-07 06:18:37

标签: uwp background-task

我使用WindowsRuntimeComponent在UWP中创建了一个后台任务。并在UWP App" OnNavigatedTo"中注册BackgroundTask。计时器事件。 它工作正常。这里我的问题是,这是注册BackgroundTask的唯一方法吗?或者我们可以像Windows服务一样托管它吗?。它可以在机器启动时自动运行UWP App启动。

有人可以帮助实现这个目标吗?

此致 Suresh K

1 个答案:

答案 0 :(得分:1)

  

这样当机器启动时无法自动运行UWP App启动。

实施后台任务有两种方法:进程内和进程外。 Windows 10版本1607中引入了进程内后台支持,以简化后台任务的编写。

对于单进程后台任务,它的生命周期受应用程序生命周期的影响,因为您担心,重新启动计算机后,您需要启动uwp应用程序来运行任务。更多详情,请参阅Create and register a single process background task。 但对于多进程后台任务,一旦您使用时间触发器注册后台任务,它将一直运行,直到您取消注册它。重新启动计算机后,任务将自动启动而不启动应用程序。更多详情,请参阅Create and register a background task that runs in a separate process

当您为后台任务windows runtime component创建TaskEntryPoint时,我认为您创建的后台任务是单独的过程。因此,您可以测试它以查看后台任务是否可以在没有应用程序启动的情况下重新启动机器后运行(注意您没有设置任何可能阻止任务的条件)。例如,我编写了一个单独的进程后台任务,其中包含一个时间触发器,用于每15分钟将当前时间写入文本文件。在我关闭机器并在第二天启动它之后,它将继续将数据写入文件而无需启动应用程序。以下是我的部分结果:

10/10/2016 5:47:25 PM second activity10/10/2016 6:02:25 PM first activity
10/10/2016 6:02:25 PM second activity10/11/2016 9:04:19 AM first activity
10/11/2016 9:04:19 AM second activity10/11/2016 9:27:44 AM first activity
10/11/2016 9:27:44 AM second activity10/11/2016 9:42:44 AM first activity

有关后台任务的更多详细信息,请参阅Guidelines for background tasksofficial sample

  

这是注册BackgroundTask的唯一方法,还是可以像Windows服务一样托管它?

Windows服务具有许多特性,例如没有UI,只要Windows正在运行就会运行。对于这些,app应用服务的声音具有类似的特征。应用程序服务作为后台任务实现。这使前台应用程序可以调用另一个应用程序中的应用程序服务来执行后台任务。在计算机上部署应用服务提供商后,您可以随时从客户端应用调用后台任务,而无需启动服务提供商应用。但是此后台任务与前台客户端应用程序具有相同的生命周期,这意味着如果您不启动客户端应用程序,则无法连接应用程序服务。更多详情请参阅Create and consume an app service

总的来说,单独流程中的后台任务可以满足您的要求。