【发布时间】:2018-02-12 18:47:15
【问题描述】:
我有一个 c# 程序,它可以通过为 cmd.exe 创建一个进程并使用启动程序的参数启动它来启动另一个程序。这很好用。但是,当 c# 程序终止时,cmd.exe 进程并没有停止。所以如果我运行程序 5 次,仍然有 5 个 cmd.exe 进程打开。
我是否需要明确关闭该进程?该过程可能并不总是开放的,因此我不确定执行此操作的最佳方法。我使用“using”语句的目的是让 cmd.exe 进程在完成后被释放。
using (Process cmd = new Process())
{
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(SimProperties.dbJarPath);
cmd.StartInfo.Arguments = String.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}",
"/k",
"java",
"-Xms2048m",
"-Xmx2048m",
"-XX:NewRatio=3",
"-Xss1024m",
"-XX:+UseParallelGC",
"-XX:MaxGCPauseMillis=100",
"-XX:ParallelGCThreads=9",
"-jar",
SimProperties.dbJarPath,
SimProperties.dbScenarioPath);
cmd.Start();
}
【问题讨论】:
-
为什么一定要使用
cmd? -
另外,所有这些硬编码参数的意义何在?为什么不一次传递整个命令?