1

我有一个通用 Windows 平台应用程序,我使用 winrt 组件(解决方案中的单独项目)进行背景检查。我正确注册它,系统每 15 分钟启动一次我的 winrt 课程。问题是我的应用程序使用相同的文件并进行与背景检查器相同的检查。所以我需要知道我的应用程序是否还活着(后台或前台)以跳过后台检查以避免多线程文件访问。有什么方法可以从 winrt 组件访问我的应用程序的状态,或者查询系统我的应用程序是否处于活动状态?

4

1 回答 1

1

自周年更新以来,现在可以从与主应用程序相同的进程中运行后台任务。后台任务和主应用程序共享相同的内存。有关如何执行此操作的信息,请参阅创建和注册单进程后台任务。

如果要将后台任务保留在与主应用程序不同的进程中,则可以使用命名的EventWaitHandle

前台应用代码

// Keep this handle alive for the duration of your app
eventHandle = new EventWaitHandle(true, EventResetMode.ManualReset, "MyApp");

后台应用代码

EventWaitHandle handle;

if (EventWaitHandle.TryOpenExisting("MyApp", out handle)) {
    // Foreground app is running
} else {
    // Foreground app is not running
}

您需要注意这里可能的竞争条件(如果这对您的情况来说是个问题)。您可能可以更好地使用 EventWaitHandle 来同步两个进程都需要执行的任何文件任务。

于 2016-10-21T12:44:29.027 回答