控制后台任务实例
Controlling background task instances
有没有办法同步一个后台任务的多个实例?
我正在开发通用 windows 8.1 商店项目。我有一个后台任务接收原始通知并下载和更新一些数据(希望满足 CPU 配额和 运行 时间限制)。
我想避免在 Windows Phone 上同时进行 运行 后台工作,当多个推送同时到达时。也就是说,后台任务应该检查它的另一个实例是否是 运行 并安静地退出。
我能想到的唯一方法是通过本地存储中的信号量文件...但是由于 WP 上的所有文件 IO 都是异步的,我不知道如何在没有竞争条件的情况下让它工作。
有什么想法吗?
有用于跨进程同步的对象,使用它们比使用文件发送信号要好得多。您可能会想到使用 EventWaithHandle or Mutex with name for global synchronization. It can work among multiple processes (not only threads). A good example of this synchronization you can find at Alabhari's blog.
在您的情况下,如果设置了句柄,则意味着其他进程正在执行工作,而当前进程可以 return。
关于等待句柄,您可以在 this question 找到更多信息。
有没有办法同步一个后台任务的多个实例?
我正在开发通用 windows 8.1 商店项目。我有一个后台任务接收原始通知并下载和更新一些数据(希望满足 CPU 配额和 运行 时间限制)。
我想避免在 Windows Phone 上同时进行 运行 后台工作,当多个推送同时到达时。也就是说,后台任务应该检查它的另一个实例是否是 运行 并安静地退出。
我能想到的唯一方法是通过本地存储中的信号量文件...但是由于 WP 上的所有文件 IO 都是异步的,我不知道如何在没有竞争条件的情况下让它工作。
有什么想法吗?
有用于跨进程同步的对象,使用它们比使用文件发送信号要好得多。您可能会想到使用 EventWaithHandle or Mutex with name for global synchronization. It can work among multiple processes (not only threads). A good example of this synchronization you can find at Alabhari's blog.
在您的情况下,如果设置了句柄,则意味着其他进程正在执行工作,而当前进程可以 return。
关于等待句柄,您可以在 this question 找到更多信息。