Как предотвратить приложение DOS / Console, которое было вызвано с использованием класса Process в .NET, автоматически закрывать командную строку после завершения? - PullRequest
2 голосов
/ 07 августа 2011

В моем приложении Winform мне нужно вызвать DOS или консольное приложение, и я делаю это с помощью следующего кода:

    Process proc = new Process();
    proc.StartInfo.FileName = lLocation.Text+"\\pywin32.exe";
    proc.StartInfo.Arguments = lLocation.Text+"\\data.pos";
    proc.Start();

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

Одним из решений, вероятно, было бы создание файла .bat с командой "pause" в конце и использование его в классе Process, но мне интересно, есть ли другой способ?

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

Вы можете просто прочитать результат процесса:

Process proc = new Process();

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = lLocation.Text+"\\pywin32.exe";
proc.StartInfo.Arguments = lLocation.Text+"\\data.pos";
proc.Start();

string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();

Затем делайте с выходом все, что хотите.

0 голосов
/ 07 августа 2011

Трудно контролировать время жизни консоли другого процесса. Ваш пакетный файл с паузой выглядит легко, чтобы решить проблему. Если вы не хотите идти по пути Брэндона.

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