Приложение Windows запускается в фоновом режиме после нескольких транзакций
У меня есть одно простое системное приложение в трее, которое работает постоянно и пытается запустить другое приложение Windows с пользовательским интерфейсом. Он позволяет пользователю взаимодействовать с ним, а затем закрывает приложение. через некоторое время он пытается сделать то же самое. Он работает правильно для нескольких транзакций, но затем не запускает приложение. Когда я проверил диспетчер задач, я обнаружил, что после нескольких успешных открытий и закрытий приложение на панели задач запускает приложение с пользовательским интерфейсом в качестве фонового процесса. Следовательно, пользователь не может видеть запуск приложения. Я пробовал добавить исключение к антивирусу как для бывших, так и пробовал разные методы закрытия и открытия бывших. Я также проверил журналы Windows, чтобы узнать, есть ли исключения. Не было никаких исключений и в моем приложении в области уведомлений. Я не могу указать точную проблему этого поведения, поскольку оно случайным образом запускает приложение в качестве фонового процесса.
любая помощь в решении этой проблемы будет очень признательна.
Чтобы запустить приложение: Я использую com-компонент, предоставленный компанией-разработчиком программного обеспечения, для взаимодействия с приложением. при создании объекта этого класса приложение запускается, и этот объект в дальнейшем используется для выполнения нескольких операций над приложением. Я также попытался запустить приложение с помощью process.start (), но у него была та же проблема.
Чтобы закрыть приложение:
if (isRunning()) { Process[] p = Process.GetProcessesByName("mdw"); if (p.Length > 0) p[0].CloseMainWindow(); PEHRsLibrary.writeTextFile(DateTime.Now + " : Closing Main Window of Application"); System.Threading.Thread.Sleep(2000); }
Я тоже пробовал процесс.убить, чтобы закрыть приложение, которое используется, чтобы дать доступ запрещен ошибка после запуска-закрытия.
Я избавляюсь от объекта onQuitevent приложения MDW. OnQuit - = OnQuitDelegate;
//MDW.OnValidatePatient -= OnValidatePatientDelegate; // loop through release until reference count is zero while (Marshal.ReleaseComObject(MDW) > 0 ) { PEHRsLibrary.writeTextFile(string.Format("{0} : Inside ReleaseMDW, releasing all dependent resources of MDW application ", DateTime.Now)); } MDW = null;
Что я уже пробовал:
Пробовал использовать разные методы, чтобы закрыть и запустить приложение.