C# FullTrustProcessLauncher在任务管理器中的UWP应用程序下创建了桌面应用程序的新实例

C# FullTrustProcessLauncher在任务管理器中的UWP应用程序下创建了桌面应用程序的新实例,c#,uwp,manifest,desktop-application,full-trust,C#,Uwp,Manifest,Desktop Application,Full Trust,无论何时我们想要使用扬声器录音,我们都需要与桌面应用程序通信,但每次我们想要访问扬声器代码或扬声器和麦克风时,它都需要调用以下代码 if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0)) { await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

无论何时我们想要使用扬声器录音,我们都需要与桌面应用程序通信,但每次我们想要访问扬声器代码或扬声器和麦克风时,它都需要调用以下代码

if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
   {
      await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
   }
上面的代码访问Recorder.exe并使用Appservice(com.Recorder.service)创建一个到桌面应用程序的通信管道。但每当我们启动FulltrustProcesslauncher时,它每次都会在任务管理器中为记录器应用程序创建新实例,并且以前创建的实例没有被使用,并且仍然列在任务管理器中我们的UWP应用程序下

我的问题是:有没有一种方法可以让我们使用以前创建的Recorder应用程序实例,或者在使用OnBackgroundActivated和StartProcess()方法创建与Recorder应用程序的新连接时杀死旧实例? 我注意到在任务管理器中,Recorder.exe都分配了唯一的ID。因此,似乎每当我们启动FullTrustProcessLauncher时,都会为Recorder应用程序分配一个新Id,而它不会识别旧的Recorder应用程序

我试过的是: 我创建了一个全局变量,并在第一次启动FullTrustProcessLauncher时将其设置为1,下次尝试访问Recorder应用程序时,我跳过StartProcess()方法。但这又带来了另一个问题,您的代码无法记录。 我还在RecorderApp中创建了一个方法,可以在不需要时退出Recorder应用程序。但我得到一个例外:对象引用未设置。
在Packager项目的包清单文件中,我添加了一个:SupportsMultipleInstances=false,希望它不会创建多个实例,但这似乎也不起作用

您是否考虑过对Recorder.exe使用单例模式?这样,如果现有实例正在运行,您就可以重用它,如果它没有运行,您就可以创建一个新的实例。谢谢Stefan,我已经在代码中实现了一个单例模式,它可以正常工作。但Recorder.exe是在代码执行以下行时生成的:wait FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();i、 在我在代码中实现单例模式之前。我真的不知道如何从任务管理器中取消/退出此过程并避免多个Recorder.exe实例。