控制后台任务实例

时间:2015-12-04 12:01:59

标签: windows-runtime windows-phone-8.1 windows-store-apps synchronization windows-8.1-universal

有没有办法同步一个后台任务的多个实例?

我正在开发一个通用的Windows 8.1商店项目。我有一个后台任务,接收原始通知和下载并更新一些数据(希望满足CPU配额和运行时间限制)。

我希望避免在多次推送到达时在Windows Phone上同时运行后台工作。也就是说,后台任务应该检查它的另一个实例是否正在运行并安静地退出。

我能想到的唯一方法是通过本地存储中的信号量文件...但由于WP上的所有文件IO都是异步的,我不知道如何在没有竞争条件的情况下使其工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

有跨进程同步的对象,使用它们比用文件发送信号要好得多。您可以考虑将EventWaithHandleMutex与名称一起用于全局同步。它可以在多个进程(不仅是线程)之间工作。您可以找到此同步的一个很好的示例at Alabhari's blog

在您的情况下,如果设置了句柄,则表示其他进程(如果执行工作和当前进程)可以返回。

至于等待句,您可以在this question找到更多信息。