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

本文关键字:前台 事件 运行时 后台任务 | 更新日期: 2023-09-27 18:36:13

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

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

但是,当应用程序位于前台时,我想在实际应用程序中触发某些内容。在不经常查看 LocalSettings 的情况下,我可以使用某种机制让任务与主应用程序通信以触发某些内容?

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

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

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

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

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

我实际上并没有专门在 WinRT 上做过这种事情,只是在其他上下文中。但是,您可能会遇到的一个限制似乎是 WinRT 只允许同一包中的两个程序之间进行通信。请参阅Metro Style 应用程序中是否有任何可用的进程间通信机制?有关这一点的更多详细信息。我不完全清楚这是否真的适用于套接字,我还没有测试过它。不过,您尝试起来很容易。

另一种替代方法可能是使用 WNS:发送通知(Windows 运行时应用)。就您的目的而言,我认为"本地通知"模型是合适的。大多数通知文档似乎特定于基于 UI 的通知(磁贴、锁屏提醒和 Toast),但还有一个基本的"原始"通知 API:Windows.Networking.PushNotifications 命名空间