0

У меня есть приложения для окон. Я буду запускать все эти приложения один за другим из консольного приложения. Если какое-либо приложение создает исключение времени выполнения, то оно должно сохранять данные этого исключения и переходить к следующему приложению.Исключить время использования окна для окон

Я пробовал решение, приведенное в следующей ссылке: catch another process unhandled exception. Но это не решение моей проблемы.

Для примера: Из моего консольного приложения, вызывающего приложение Windows с именем 'App1.exe'. Если App1 предоставляет исключение времени выполнения, он должен быть зарегистрирован консольным приложением и продолжить все остальное.

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

+0

Почему ваша ссылка не разрешает проблему? –

+0

Получая исключение во время выполнения, он показывает окно исключения и стоит прямо там, чтобы закрыть это окно. Но для моего требования он не должен показывать окно исключения. Достаточно зарегистрировать детали исключения. –

ответ

0

Ваших вариантов один или сочетание эти:

  • использовать код возврата вашего приложения в вас консольном приложении
  • поймать и журнал исключений (например, в файл или wathever) из самого приложения и файл журнала процесса в консольном приложении.

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

static void Main(string[] args) 
    { 
     try 
     { 
      var process = Process.Start("WpfApplication1.exe"); 
      process.WaitForExit(); 
      Console.WriteLine("App exited with code " + process.ExitCode); 
      Console.ReadKey(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.Message); 
     } 
    } 

Если вы не хотите исключение для отображения в пользовательском интерфейсе в приложении, вы должны поймать их в самом приложении (и зарегистрировать их, чтобы обработать их в консольном приложении, если это необходимо).