c# - 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 来回避这个问题。
解决方案
推荐阅读
- flutter - 嵌套的 StreamBuilder 是好的模式吗?
- mysql - my.cnf 位于 macOS High Sierra 上的哪个位置?
- c# - 在 SQL 数据库的插入语句中调用 FILETOCLOB 函数的正确方法是什么?
- wordpress - 过滤器应用于意外查询
- java - 在 Azure 搜索上上传文档后,我可以查询它吗?
- pact - 如何处理 Pact 上的多态端点?
- r - 如何修复 R 中的“找不到对象”错误
- qt - 如何在 Qt 5.12 中使用 /std:c++latest
- linux - 为什么我的 Raspberry Pi SPI 写入循环会暂停大约 15 毫秒?上下文切换?
- html - 如何修复这个第二层下拉菜单背景?