有没有办法同步一个后台任务的多个实例?
我正在开发一个通用 Windows 8.1 商店项目。我有一个后台任务,用于接收原始通知并下载和更新一些数据(希望满足 CPU 配额和运行时间限制)。
当多个推送同时到达时,我想避免在 Windows Phone 上同时运行后台工作。也就是说,后台任务应该检查它的另一个实例是否正在运行并安静地退出。
我能想到的唯一方法是通过本地存储中的信号量文件...但是由于 WP 上的所有文件 IO 都是异步的,我不知道如何在没有竞争条件的情况下使其工作。
有什么想法吗?
最佳答案
有一些用于跨进程同步的对象,使用它们比使用文件发送信号要好得多。您可能会考虑使用 EventWaithHandle或Mutex具有全局同步的名称。它可以在多个进程(不仅仅是线程)之间工作。您可以找到此同步的一个很好的示例 at Alabhari's blog .
在您的情况下,如果设置了句柄,则意味着其他进程(如果正在执行工作)和当前进程可以返回。
关于等待句柄,您可以在this question找到更多信息。 .
关于windows-runtime - 控制后台任务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087958/