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