检查应用程序是否正在从后台任务运行

PEK*_*PEK 1 win-universal-app windows-10-universal

我正在创建一个带后台任务的UWP应用程序.我不想在真正的应用程序运行或暂停时运行后台.有没有办法实现这一目标?我看过SystemConditionType但是没有什么适合我正在寻找的东西.

Meh*_*raz 6

由于后台任务(特殊任务除外)在一个单独的进程中运行,因此没有一种优雅的方法来检查应用程序是否正在运行,因为应用程序和后台任务之间没有共享内存.我成功实施了两种方式:

应用服务

在应用程序创建应用程序服务,在后台任务中尝试连接到该服务.如果服务可用,则表示该应用正在运行.当您需要在任务和应用程序之间进行通信时,这是最受欢迎的.

文件锁定

这是在简单场景中最喜欢的一个,您只需知道应用程序是否正在运行.

  1. 每次应用程序启动时,在本地app文件夹中创建/打开一个文件,打开它进行写入,并在应用程序运行时保持打开状态.在Suspending事件上关闭它并在Resuming事件上重新打开它.
  2. 在后台任务中,尝试打开文件进行写入,如果尝试成功,则表示应用程序未运行.
  3. 在后台任务中立即关闭该文件.

注意: 在周年纪念更新中可用的新API中,后台任务可以在与应用程序相同的过程中执行.使用新模型,您将不再遇到此问题.