Обнаружение зависания приложения с помощью элементов управления ActiveX в .Net

StackOverflow https://stackoverflow.com/questions/59622

  •  09-06-2019
  •  | 
  •  

Вопрос

Я работаю над обновлением приложения для очистки экрана.Мы используем элемент управления ActiveX для извлечения экранов из мэйнфрейма IBM.Программа мэйнфрейма часто зависает и выводит из строя элемент управления ActiveX, что приводит к аварийному завершению работы нашего приложения.У нас нет доступа к мэйнфрейму или исходному коду ActiveX.Мы не собираемся писать наш собственный активный элемент управления x.

Каков наилучший способ инкапсуляции элемента управления ActiveX для обнаружения зависания приложения с помощью элемента управления, чтобы мы могли завершить процесс и перезапустить его с помощью кода?

Должен ли я создать 2 отдельных приложения?Один в качестве контроллера, который проверяет другой и завершает / перезапускает процесс, когда он зависает?

Должны ли они находиться в отдельных доменах приложений?Возможно ли, чтобы две программы взаимодействовали друг с другом, даже если они находятся в разных доменах приложений?

Это было полезно?

Решение

Вы можете запустить исполняемый файл с помощью System.Диагностика.Процесс.Запуск().Это возвращает объект процесса со свойством Responsing, которое вы можете использовать для периодической проверки, активен ли процесс по-прежнему.

Однако для этого вам понадобятся два отдельных приложения.И приложение, которое вы отслеживаете, должно иметь главное окно, потому что мониторинг работает путем проверки, все ли еще приложение обрабатывает сообщения из messagequeue главного окна.Это тот же самый способ, которым Windows знает, как добавить "Не отвечает" к заголовку окна

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top