Выход из программы на C # после запуска другого процесса - PullRequest
0 голосов
/ 12 августа 2011

Эта проблема странная. Я никогда не сталкивался с чем-либо подобным. Я пытаюсь заставить мою программу распаковать файл, используя 7zip. Я делал это раньше в других программах, и это никогда не было слишком сложно. Поэтому я скопировал и вставил свой код в:

Process process = new Process
{
    StartInfo =
    {
        CreateNoWindow = true,
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = "7za.exe",
        UseShellExecute = false,
        ErrorDialog = false,
        Arguments = "x -y -o\"" + outputPath +"\" \""+ inputFile +"\"",
        RedirectStandardOutput = false,
    }
};
process.Start();

Сразу после запуска этого кода мое приложение завершает работу. Это просто исчезает. Это, конечно, не предназначено! Я использовал шаг в функцию и запустил его. Как только process.Start(); закончил, программа закрылась и вернула меня в Visual C #. Он не пробежал Application.Exit(); или что-то еще, он просто ушел. Там не было никаких ошибок, ожидающих меня в Visual C #. Поэтому я попытался добавить MessageBox.Show("Test"); до конца. Запустил его в пошаговом режиме. Сделал process.Start(); нормально, как только он выполнил код MessageBox, он снова исчез. Я даже не нажимал кнопку ОК в окне сообщения (которое показывалось в течение примерно 0,2 секунды, прежде чем приложение закрылось)

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Хорошо, если этот код находится в Main (), то он закончится, когда ваш код будет выполнен. Можете ли вы опубликовать полный код, где содержится этот фрагмент?

Вы можете дождаться завершения процесса, добавив

process.WaitForExit();

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

process.StartInfo.RedirectStandardError = true;
string error = process.StandardError.ReadToEnd();
1 голос
/ 12 августа 2011

Попробуйте process.WaitForExit () после process.Start () ...

...