Перезапуск / останов DLL библиотеки брокера UWP - PullRequest
0 голосов
/ 23 октября 2018

, поэтому я выполняю печать для своего приложения UWP, следуя этому руководству. https://docs.microsoft.com/en-us/windows/uwp/winrt-components/brokered-windows-runtime-components-for-side-loaded-windows-store-apps#creating-and-deploying-the-windows-runtime-proxy

У меня есть ошибка, из-за которой принтер перестает работать, и я понял, что одно исправление - войти в диспетчер задач и удалить COM Surrogate.связано с DLL.Я не уверен, как узнать, что это за DLL, кто-нибудь сталкивался с этой проблемой раньше?

Я думаю, что исправление заключается в том, чтобы как-то связать компонент, но я не уверен, как.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Правильный способ печати из UWP - это использование API-интерфейсов Windows.Graphics.Printing, Windows.UI.Xaml.Printing, PrintDocument, как описано здесь: https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/print-from-your-app

Одна вещь, на которую следует обратить вниманиезаключается в том, что этот подход в настоящее время не поддерживает сценарии автоматической / автоматической печати.Для тех, кому нужно будет обойтись, используя классический API печати Win32, либо из брокерского компонента (как вы пытались), либо используя настольное расширение для вашего UWP.Последний является предпочтительным маршрутом (брокерские компоненты - технология эпохи Win8).У меня есть краткое руководство по расширениям рабочего стола здесь: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/ и очень простой пример тихой печати здесь: 1drv.ms / u / s! AovTwKUMywTNnOsbzlRfghOikDy8Dw

0 голосов
/ 24 октября 2018

Я использовал эту технику (Brokered Windows Runtime Components) в LOB-приложении в течение нескольких лет, и это всегда PITA для обслуживания.

Каждый раз, когда я обновлял Brokered Windows Runtime Component Iнужно будет зарегистрировать его снова, используя regsvr32.exe.Если я запустил приложение и COM Surrogate уже запущен, регистрация не удастся.Мне нужно будет перезагрузить систему, или я должен убить запущенный «dllhost.exe» в диспетчере задач - может быть несколько экземпляров dllhost.exe, и я просто убиваю те, которые работают под текущим пользователем входа в систему, и оставляюони запускаются как SYSTEM.

Один из экземпляров dllhost.exe содержит созданную и зарегистрированную библиотеку DLL.Непонятно, почему принтер перестает работать, поэтому я не могу дать ответ.Чтобы помочь расследованию, добавьте несколько журналов к этим точкам.

  1. Когда код приложения вызывает компонент среды выполнения Brokered Windows, проверьте возвращаемое значение вызова и попытайтесь перехватить любое исключение.

  2. Внутри компонента Brokered Windows Runtime, при входе и выходе из метода, вызываемого приложением.

  3. Проверьте код, который использует принтер, он работает правильно?или это вообще называется?

...