.NET 3.x Как получить строку с ошибкой при запуске стороннего приложения? - C#
Формулировка задачи:
Уважаемые программисты , прошу подсказать по теме. Создана программка, которая меняет в текстовом файле данных стороннего приложения некоторые поля и запускает это приложение с параметром в виде этого файла (это автоматизация инженерного расчета). Запускается все в отдельном потоке с помощью "System.Diagnostics.Process.Start", обрабатывается событие Exited и по результатам заново меняется файл данных и заново запускается процесс. И т.д. до получения необходимого результата.
Вопрос! Как получать ошибку запущенного стороннего приложения (все стандартно - приложение возвращает в систему "0" если завершилось нормально или какую-то другую цифру в зависимости от ошибки в приложении), Мне нужно отлавливать эту строку чтобы правильно обработать ситуацию.
Как это сделать в net?
Заранее спасибо!
Решение задачи: «.NET 3.x Как получить строку с ошибкой при запуске стороннего приложения?»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- public class SomeYourClass
- {
- /* some other code */
- public void RunProcess()
- {
- // как-то формируем параметры запуска процесса
- Dictionary<string, string> runParams = ...;
- // создаём экземпляр runner-a
- ProcessRunner runner = new ProcessRunner(@"<path_to_your_exe>.exe", runParams);
- // создаём экземпляр делегата, запускаем его асинхронно и цепляем к нему callback продолжения
- Func<int> runFunction = new Func<int>(runner.StartAndWait);
- runFunction.BeginInvoke(new AsyncCallback(AnalyzeExitCode), runFunction);
- }
- private void AnalyzeExitCode(IAsyncResult result)
- {
- Func<int> runFunction = result.AsyncState as Func<int>;
- if (runFunction != null)
- {
- int exitCode = runFunction.EndInvoke(result);
- // тут каким-либо образом анализируем exit code внешнего процесса
- }
- }
- }
- public class ProcessRunner()
- {
- private string ExeFilePath;
- private Dictionary<string, string> RunParameters;
- public ProcessRunner(string exeFilePath, Dictionary<string, string> parameters)
- {
- ExeFilePath = exeFilePath;
- RunParameters = parameters;
- }
- public int StartAndWait()
- {
- ProcessStartInfo startInfo = new ProcessStartInfo(ExeFilePath)
- {
- // заполняем поля класса ProcessStartInfo из RunParameters
- };
- Process externalProc = Process.Start(startInfo);
- externalProc.WaitForExit();
- return externalProc.ExitCode;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д