此过程与我的应用程序“独立”运行。我可以在脚本运行的同时使用我的表单,而不是等待退出。
string strCmdText = "some command line script";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
这个虽然在我的表单中停止了进程,直到命令行窗口被关闭:
Process p = new Process();
p.StartInfo.Verb = "runas";
p.StartInfo.FileName = cmd.exe;
p.Start();
对我来说,两者似乎都是相同的process.start()
。那有什么区别?
答案 0 :(得分:2)
它们非常相似,但不等效。
以下是Process.Start
method implemented;
public static Process Start(string fileName, string arguments)
{
return Start(new ProcessStartInfo(fileName, arguments));
}
new ProcessStartInfo(fileName, arguments)
构造函数将第二个参数设置为参数字符串,即ProcessStartInfo.Arguments
property而不是Verb
属性。还有;
public static Process Start(ProcessStartInfo startInfo)
{
Process process = new Process();
if (startInfo == null) throw new ArgumentNullException("startInfo");
process.StartInfo = startInfo;
if (process.Start()) {
return process;
}
return null;
}
正如您从文档中看到的那样;
重载将资源与新的
Process
组件相关联。如果 该进程已在运行,不会启动其他进程。 相反,现有的流程资源被重用,没有新的Process
组件已创建。在这种情况下,而不是返回一个新的Process
组件,Start
将null
返回给调用过程。