Windows Phone 8.1后台任务和前台应用程序通信

gol*_*ldy 3 windows-phone windows-runtime windows-8.1 windows-phone-8.1

我正在开发一个Windows Phone 8.1应用程序,它为每小时操作注册一个后台任务计时器触发器.基本上,后台任务每60分钟唤醒并执行一些操作.

我的问题是,当后台任务正在进行时,如果用户唤醒了应用程序,是否有一种方法可以向用户显示后台任务进程中发生了什么?

我知道他们是两个不同的过程.我正在为前台应用程序使用Silverlight 8.1项目,为后台任务使用托管的Windows运行时项目.我正在使用silverlight应用程序注册后台任务,但我现在正在考虑如何在这两个进程之间建立通信桥梁.

有线索吗?这甚至可能吗?

yas*_*sen 5

以下是有关应用程序与其后台任务之间通信的一些想法(或信息).

  • 您可以使用IBackgroundTaskRegistration对象的Progress和Completed事件.您可以使用BackgroundTaskRegistration.AllTask​​s获取该对象 - 此属性返回应用程序注册的后台任务列表.每次应用程序运行时,您都必须订阅这些事件.

    从后台任务中,您可以将IBackgroundTaskInstance对象的Progress属性设置为某个UInt32值,应用程序将接收该事件.也许你可以用这个数字编码你需要的东西.例如:1表示任务正在初始化,2 - 任务正在进行WorkA,依此类推......

  • 两个进程都可以访问相同的文件,所以也许你可以使用它来做某些事情.

  • 使用Mutex同步两个进程之间的代码执行.

这就是我现在所能想到的.我希望它有所帮助.

PS我没有真正尝试过那些事件,但看起来它们似乎很有用.

  • @golldy如果您只想知道后台任务是否正在运行,您可以使用互斥锁.在后台任务运行时获取Mutex上的锁定.如果要从应用程序中检查它,请尝试使用mutex.WaitOne(0)获取Mutex上的锁定.此调用尝试立即获取锁定(无需等待某人释放它).如果成功则返回true,否则返回false.如果结果为false - 锁定是由其他人获得的 - 后台任务. (2认同)