如何确定 AppService 何时因 UWP 应用挂起或完全信任进程关闭而关闭?

Des*_*key 5 windows-10 uwp desktop-bridge

考虑以下示例:https : //github.com/StefanWickDev/UWP-FullTrust/tree/master/UWP_FullTrust_3

UWP 应用在创建 AppService 时,会观察相关的任务取消,以检测 AppService 的关闭。AppService 在以下情况下关闭:

  1. 完全信任进程删除 AppServiceConnection。
  2. UWP 应用已暂停。

我想要实现的逻辑是,如果由于完全信任进程消失(例如崩溃)而导致连接断开,则重新启动完全信任进程,但如果 UWP 应用程序将暂停,则避免重新启动。我还没有找到一种可靠的方法来做到这一点。

在 App.OnTaskCanceled 中,参数中没有任何内容可以指示导致关闭的原因(两种情况下都是 SystemPolicy)。那时 App.IsSuspending 是假的。App.Suspending 事件总是在 App.OnTaskCanceled 被触发后发生。

我可以启动一个计时器并延迟重启,相信 App.Suspending 在一个时间窗口中被触发,但我更愿意使用一种不太复杂的方式。

顺便说一句,如果 AppServiceConnection 处于打开状态,我不清楚是否可以暂停 UWP 应用程序。至少 VS 允许我使用生命周期控件触发挂起/恢复,并且 UWP 应用程序的挂起/恢复被触发。

桌面桥 UWP 应用程序的暂停/恢复行为似乎没有记录,所以我基本上是在尝试反向工程这是如何工作的......

Ste*_*SFT 4

您可以使用 EnteredBackground/LeavingBackground 事件来区分这两种情况。

以下是显示此方法的完整示例:
https://github.com/StefanWickDev/UWP-FullTrust/tree/master/UWP_FullTrust_3

相关博文:
https://stefanwick.com/2018/04/16/uwp-with-desktop-extension-part-3/