Здравствуйте!
Долго искал на форуме решение своей проблемы. Есть много схожих тем, но ни одно решение не помогло.
Запускаю внешнее приложение в отдельном процессе через Process.Start(). (Приложение разработано не мной, у меня есть только exe-шник.) Перенаправляю ввод-вывод, если через несколько секунд приложение не завершается — убиваю. Но! Иногда оно падает, при этом выводится диалог "*** has encountered a problem and needs to close. We are sorry for the inconvenience.". Не смотря на то, что процесс я убиваю по таймауту, окно с сообщением об ошибке остается висеть. С течением времени, количество таких окон только растет, отжирая системные ресурсы. Что делать?
Обрабатывать AppDomain.CurrentDomain.UnhandledException и Application.ThreadException пробовал — не помогает.
Прописывать в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgJITDebugLaunchSetting единичку тоже.
Помогите пожалуйста!
Здравствуйте, Yaros, Вы писали:
[Skip]
Y>Помогите пожалуйста!
Вариант запустить дочерний процес в дебаге, а хостовой программе стать дебаггером.
Взять экспорты Win API, например
отсюда
Создать дочерний процесс через
CreateProcess и поставить CreationFlags равным DEBUG_EVENT
Потом
WaitForDebugEvent и
ContinueDebugEvent и так до завершения процесса.
Таким образом мы становимся дебаггером нашему процессу и можем перехватывать Unhandled Exceptions.
Удачи.