以下流程有什么区别?

时间:2014-05-30 08:17:52

标签: c# winforms process

此过程与我的应用程序“独立”运行。我可以在脚本运行的同时使用我的表单,而不是等待退出。

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()。那有什么区别?

1 个答案:

答案 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组件,Startnull返回给调用过程。