Process
和ProcessStartInfo
之间有什么区别?我已经用它们来启动外部程序,但必须有两种方法可以做到这一点。这是两个例子。
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
和
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.Arguments = "ProcessStart.cs";
Process.Start(startInfo);
答案 0 :(得分:7)
它们非常接近,它们都来自Process类。实际上4 other overloads to Process.Start除了你提到的之外,都是静态的。
一种是static method方式。它返回表示已启动进程的Process对象。例如,您可以通过这种方式使用单行代码启动进程。
另一种方法是member method这样做,它重用当前对象而不是返回一个新对象。
答案 1 :(得分:3)
嘿。
如果仔细查看代码,您会发现它们都使用相同的类。您的第一个示例中的StartInfo
属性非常简单,只有ProcessStartInfo
。在第二个示例中,您在.Start
类上调用静态Process
方法。
那有什么区别?重大。他们是不同的班级。一个用于启动进程,一个用于说明要启动哪个进程(以及许多其他小东西,比如捕获输出等)。在第一种情况下,您只需使用该类具有的默认ProcessStartInfo
属性。
答案 2 :(得分:0)
如果您查看下面 ProcessStartInfo
变量的成员,似乎 Process
是 notePad
的子集
Process notePad = new Process();
您会注意到 StartInfo 具有类型(或类)ProcessStartInfo
这就是为什么两个初始化是相同的
notePad.StartInfo.FileName = "notepad.exe";
对 startInfo.FileName = "notepad.exe";
由于 Process
是完整的课程,我认为它可以完成 ProcessStartInfo
可以做的所有事情以及额外的但不要相信我的话,我只有不到一年的 .Net 经验