Я пытаюсь запустить tomcat из моего приложения C# wpf с помощью startup.bat и после развертывания файлов войны, я хочу его закрыть. Вот как я это делал, и это, казалось, работало нормально.C# System.Diagnostics.Process как обрабатывать несколько командных файлов
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\startup.bat";
proc.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
// do some bla bla
//Close Tomcat
proc.StartInfo.Filename = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
proc.Start();
proc.WaitForExit();
Теперь я думал, что, хотя он работает, это не совсем верно? приложение Tomcat запускается никогда не останавливается, если я не говорю об этом, неправильно использовать тот же процесс, чтобы его также отключить?
То, что я вниз теперь что-то вроде этого: Хранится процесс для запуска Tomcat, и создал еще один, который призывает к остановке:
//Close tomcat
System.Diagnostics.Process proc_shutdown = new System.Diagnostics.Process();
proc_shutdown.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
proc_shutdown.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
proc_shutdown.StartInfo.CreateNoWindow = true;
proc_shutdown.Start();
proc_shutdown.WaitForExit();
Единственное, что мне не нравится об этом метод заключается в том, что он приносит сообщение, которое спрашивает меня, разрешаю ли вы вызывать shutdown.bat из моего приложения, и я могу снять флажок «Не спрашивайте меня снова для этого файла», но мне все еще не нравится, когда пользователь это испытывает обеспечивает.
Я также пробовал напрямую обращаться к proc.Close() вместо того, чтобы делать proc.Filename = path_to_shutdown и proc.Start(), но он, казалось, повесил приложение и никогда не закрывал tomcat.
Итак, что является лучшим способом начать tomcat, сделать что-то, а затем закрыть его? Спасибо, Разван.