首页 > 解决方案 > AppService 连接会导致应用程序挂起吗?

问题描述

所以我有一个关于我在我正在从事的项目中观察到的特定行为的问题。我正在使用 Unity 开发 UWP。我无法分享代码,但问题更多是关于 Windows 处理应用程序和应用程序服务的方式。

所以我有两个应用程序,A 和 B。A 是您的标准 UWP 应用程序,B 也是 UWP,但由 Unity 生成(我不知道它是否会改变任何东西)。B 也是 Hololens 应用程序。我所描述的一切都在 Hololens V1 上工作。

我的目标是让 A 启动 B。由于一些旧的设计决策,我们使用 App Servcies 在两者之间进行通信。所以在我的代码中,A 建立了一个与 B 的 AppService 连接。在后台,B 使用 Toast 通知来激活自己。激活后,B 还会为 A 建立一个 AppService(但实际上是一个新的)。在我的测试中,我将 Visual Studio 连接到 A,一切正常。

但是,当我将调试器与 A 分离时,我观察到了我想了解的行为。如果我在没有附加调试器的情况下启动 A,然后启动 B,那么几秒钟后(在 B 占据前台之后),两个应用程序都将被挂起。我现在看到 Visual 调试器正在阻止应用程序 A 挂起。

起初我以为这可能是 Toast 激活。但是,如果 A 建立 appservice 连接并且我自己启动 B,也会出现问题。我看到了因果关系,因为如果我在 A 的 OnSuspend 中请求执行扩展,那么 B 也将有一个扩展。

所以我的问题是:为什么会这样?当你创建一个 Appservice 连接到一个已经运行的应用程序时会发生什么?

现在我通过删除 A 中的任何 AppService 连接并通过协议启动 B 来回避这个问题。

标签: c#windowsuwp

解决方案


推荐阅读