下面的工序有什么区别?

本文关键字:什么 区别 | 更新日期: 2023-09-27 18:05:47

这个过程是"独立"运行从我的应用程序。我可以使用我的表单同时脚本正在运行,而不是等待退出。

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

下面的工序有什么区别?

它们非常相似,但并不等同于

Process.Start方法是如何实现的;

public static Process Start(string fileName, string arguments)
{
     return Start(new ProcessStartInfo(fileName, arguments));
}

new ProcessStartInfo(fileName, arguments)构造函数将第二个参数设置为参数字符串,该字符串是ProcessStartInfo.Arguments属性而不是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给调用过程。