C#中Process和ProcessStartInfo有什么区别?

时间:2010-05-23 00:45:12

标签: c# process

ProcessProcessStartInfo之间有什么区别?我已经用它们来启动外部程序,但必须有两种方法可以做到这一点。这是两个例子。

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);

3 个答案:

答案 0 :(得分:7)

它们非常接近,它们都来自Process类。实际上4 other overloads to Process.Start除了你提到的之外,都是静态的。

一种是static method方式。它返回表示已启动进程的Process对象。例如,您可以通过这种方式使用单行代码启动进程。

另一种方法是member method这样做,它重用当前对象而不是返回一个新对象。

答案 1 :(得分:3)

嘿。

如果仔细查看代码,您会发现它们都使用相同的类。您的第一个示例中的StartInfo属性非常简单,只有ProcessStartInfo。在第二个示例中,您在.Start类上调用静态Process方法

那有什么区别?重大。他们是不同的班级。一个用于启动进程,一个用于说明要启动哪个进程(以及许多其他小东西,比如捕获输出等)。在第一种情况下,您只需使用该类具有的默认ProcessStartInfo属性。

答案 2 :(得分:0)

如果您查看下面 ProcessStartInfo 变量的成员,似乎 ProcessnotePad 的子集

Process notePad = new Process(); 您会注意到 StartInfo 具有类型(或类)ProcessStartInfo 这就是为什么两个初始化是相同的 notePad.StartInfo.FileName = "notepad.exe";startInfo.FileName = "notepad.exe"; 由于 Process 是完整的课程,我认为它可以完成 ProcessStartInfo 可以做的所有事情以及额外的但不要相信我的话,我只有不到一年的 .Net 经验