我正在开发一个具有实时翻转磁贴的 Windows Phone 8 应用程序。我将创建一个计划代理(不是资源密集型的定期任务),它将使用本地数据更新动态磁贴。
整个应用程序不以任何方式连接到互联网,它只使用本地数据。所以推送通知是不可能的。
我需要在后台代理和/或前台应用程序启动时更新动态磁贴,以先发生者为准。
但是,如何确保前台应用程序和后台代理不会互相踩到对方的脚趾?我有两个主要选择来做到这一点:
使用互斥锁(AFAIK 后台代理在不同的进程中运行,因此锁定(即监视器)是不可能的)。但我担心它会产生很高的性能成本(即获取和释放互斥锁)。
当前台应用程序启动时,我总是会删除代理,完成它的工作并重新安排代理。因此,前台应用程序和后台代理程序之间不会有任何重叠的机会,但是整个添加/删除代理程序也可能很长,此外,用户可能会在删除代理程序之后但在添加之前关闭应用程序。 .
我真的在这两种方法之间左右为难,不知道哪种方法最好。
PS:您不能从代理自己的代码重新安排代理,对吗?