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

Triggering event in foreground when background task is running at the same time?

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

我的后台任务在收到推送通知时触发。大多数情况下,它发生在应用程序未使用时。通知被保存,当再次加载应用程序时,将根据收到的内容触发操作。这很容易通过 LocalSettings 实现,应用程序可以检查加载时是否存储了某些内容。

然而,当应用程序在前台时,我想在实际应用程序中触发一些东西。在不经常查看 LocalSettings 的情况下,是否有一种机制可以让任务与主应用程序通信以触发某些东西?

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

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

WinRT 支持的另一种替代方法是命名互斥锁。但是那不能传输数据;它只能用于从一个进程向另一个进程提供某种信号,并且没有用于等待互斥体的内置异步机制,而套接字可以异步使用。

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

我实际上并没有专门在 WinRT 上做过这种事情,只是在其他情况下。但是您可能 运行 遇到的一个限制似乎是 WinRT 将只允许来自同一包的两个程序之间进行通信。有关这一点的更多详细信息,请参阅 Is there any Inter Process Communication mechanism available in Metro Style App?。我并不完全清楚这是否真的适用于套接字,而且我还没有测试过它。不过你试试也很容易。

另一种选择可能是使用 WNS:Sending notifications (Windows Runtime apps). For your purposes, I think the "local notification" model would be appropriate. Most of the notification documentation seems to be specific to UI-based notification (tile, badge, and toast), but there is also a basic "raw" notification API: Windows.Networking.PushNotifications namespace