FullTrustProcessLauncher создал новые экземпляры настольного приложения в приложении UWP в диспетчере задач - PullRequest
2 голосов
/ 29 мая 2019

Всякий раз, когда мы хотим записывать с использованием Speaker, нам необходимо взаимодействовать с настольным приложением, но при каждом обращении к коду динамика или к динамику и микрофону необходимо вызывать приведенный ниже код.

if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
   {
      await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
   }

Приведенный выше код обращается к Recorder.exe и создает канал связи с помощью Appservice (com.recorder.service) для настольного приложения. Но всякий раз, когда мы запускаем FulltrustProcesslauncher, он каждый раз создает новый экземпляр для приложения Recorder в диспетчере задач, а ранее созданный экземпляр не используется и все еще отображается в нашем приложении UWP в диспетчере задач.

Мой вопрос: существует ли способ, при котором мы можем либо использовать ранее созданный экземпляр приложения Recorder, либо мы можем уничтожить старый экземпляр всякий раз, когда мы создаем новое новое соединение с приложением Recorder, используя методы OnBackgroundActivation и StartProcess ()? Я заметил, что в диспетчере задач обоим Recorder.exe назначен уникальный идентификатор. Таким образом, создается впечатление, что всякий раз, когда мы запускаем FullTrustProcessLauncher, новому приложению Recorder назначается новый идентификатор, который не идентифицирует старое приложение Recorder.

Вещи, которые я пробовал: Я создал одну глобальную переменную и установил ее как 1, когда я запускаю FullTrustProcessLauncher в первый раз, а в следующий раз, когда я пытаюсь получить доступ к приложению Recorder, я пропускаю метод StartProcess (). Но это дает другую проблему, при которой ваш код не записывается. Я также создал один метод в RecorderApp для выхода из приложения Recorder, когда мне это не нужно. Но я получаю исключение: ссылка на объект не установлена. В файле Manifest пакета проекта Packager я добавил: SupportsMultipleInstances = false, надеясь, что он не будет создавать несколько экземпляров, но это тоже, похоже, не работает

...