2010-01-27 1 views
1

Использование объекта System.Diagnostics.Process C#, я запускаю неуправляемый exe, который позже запускает еще один неуправляемый exe.Ловля необработанного исключения, вызванного неуправляемым подпроцессом

2-й exe вызывает необработанное исключение, которое я бы хотел, чтобы мое приложение игнорировалось, но не может показаться.

Я использую инструкцию try/catch при запуске первого процесса, но, похоже, это не исключение, вызванное 2-м процессом. Когда возникает исключение, отладчик точно в срок уведомляет меня и останавливает мое приложение, пока я не нажму вручную «да», я хочу отлаживать или «нет». Затем мое заявление продолжается.

Отладчик JIT не имеет исходного кода для файла 2process.exe, который выдает исключение. Итак, это не говорит мне, что такое исключение. Мне все равно, что такое исключение, я просто хочу знать, как его поймать и игнорировать, поэтому мое приложение не останавливается на этом. К тому времени, когда возникает исключение, работа выполняется в любом случае.

Может ли кто-нибудь предложить понимание?

+0

Я нашел исключение в управлении компьютером Даже просмотр: необработанного исключения win32 произошло в 2ndProcess.exe [2656]. Отладка с ошибкой «Just-In-Time» с ошибкой со следующей ошибкой: Не удалось выполнить удаленный вызов процедуры. –

+1

У вас есть доступ к первому неуправляемому коду? Если это так, вам нужно уловить ошибку, поскольку она запускает второй неуправляемый процесс. – t0mm13b

ответ

1

Вы должны правильно обработать исключение во втором исполняемом файле. Ваша основная программа не поймает исключение, потому что она не бросает ее, она выполняет что-то, что есть.

Edit:

У вас есть доступ к источнику второго процесса (один метание исключения)? Ваше приложение никогда не должно просто сбой. Если исключительный случай правильно обрабатывается во втором процессе, у вас не будет этой проблемы в вашем основном приложении.

Edit2:

Поскольку у вас есть доступ к исходному (с открытым исходным кодом) Я рекомендую вам исправить ошибку. Это поможет вам двумя способами:

1) Ваша программа, наконец, будет работать.
2) Вы можете сказать, что вы внесли свой вклад в проект с открытым исходным кодом.

И, в качестве специального бонуса, вы можете помочь проекту, который вы часто используете. Win/Win

+0

Мое приложение явно не запускает второй процесс. Первый процесс (который неуправляемый) запускает его. Итак, как я могу «правильно обрабатывать» второй процесс? –

+0

Если 2ndprocess.exe не является внешним компонентом, над которым они не имеют контроля ... Мы видели это раньше. –

+0

@Byron, который может быть так, если вы не можете это исправить, тогда я думаю, что лучше всего, чтобы основное приложение создало условия, необходимые для того, чтобы не получить это исключение, если это возможно в этой ситуации. –

1

Поскольку вы используете process.start для запуска приложения, приложение создает отдельный домен приложения. Захват исключения из этого приложения не является чем-то, что, я считаю, будет возможным, поскольку более чем вероятно, что диалог JIT подходит из-за этого неудавшегося процесса.

Хотя это не решение, вы можете stop the dialog при необходимости, но у этого есть свои проблемы.

+0

Вы предполагаете, что остановка диалога также приведет к тому, что мое приложение не остановится во время появления диалога? –

 Смежные вопросы

  • Нет связанных вопросов^_^