当后台任务同时运行时在前台触发事件?

我有一个单独的项目(dll)中的Windows应用程序的后台任务。

当收到推送通知时,我的后台任务被触发。 当应用程序未被使用时,大部分时间发生。 通知已保存,当应用程序再次加载时,将根据收到的内容触发一个操作。 使用LocalSettings很容易实现,应用程序可以检查是否有负载存储在那里。

然而,当应用程序在前台时,我想在实际应用程序中触发某些内容。 没有经常查看LocalSettings,有没有一种机制可以让我的任务与主应用程序进行通信来触发某些东西?

没有更具体的问题,很难提供具体的建议。

但是,在WinRT上,我相信你最好的选择是使用套接字在后台进程和前台进程之间进行通信。 命名管道将是可取的,但似乎不支持WinRT。

另一个在WinRT上支持的替代方案是一个有名的互斥体。 但是这不能传输数据; 它只能用来提供某种信号从一个进程到另一个进程,没有内置的异步机制来等待互斥体,而套接字可以异步使用。

所以恕我直言,基于套接字的方法是这种通知更好的选择。

在WinRT中,我没有真正做过这样的事情,只是在其他情况下。 但是你可能遇到的一个限制似乎是WinRT将只允许来自同一个包的两个程序之间的通信。 请参阅Metro Style App中是否有任何Inter Process Communication机制? 关于这一点的更多细节。 我不清楚这是否适用于套接字,我没有测试它看到。 尽管如此,这对你来说很容易。

另一种选择可能是使用WNS: 发送通知(Windows运行时应用程序) 。 为了您的目的,我认为“本地通知”模式是适当的。 大部分的通知文档似乎是特定于基于UI的通知(平铺,徽章和吐司),但也有一个基本的“原始”通知API: Windows.Networking.PushNotifications命名空间