因此,我对正在研究的项目中观察到的特定行为有疑问。我正在与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来避免该问题。