簡體   English   中英

C# 中的 Process 和 ProcessStartInfo 有什么區別?

[英]What’s the difference between Process and ProcessStartInfo in C#?

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

它們非常接近,都來自 Process 類。 除了你提到的之外, Process.Start實際上還有4 個其他的重載,都是靜態的。

一種是靜態方法來做到這一點。 它返回代表啟動進程的 Process 對象。 例如,您可以使用這種方式用一行代碼啟動一個進程。

另一種是成員方法來實現它,它重用當前對象而不是返回一個新對象。

呵呵。

如果您仔細查看您的代碼,您會注意到它們都使用相同的類。 第一個示例中的StartInfo屬性毫無疑問是ProcessStartInfo 在第二個示例中,您在Process調用靜態.Start方法。

那么有什么區別呢? 重大。 他們是不同的班級。 一個用於啟動進程,一個用於說明要啟動哪個進程(以及許多其他小事情,例如捕獲輸出等)。 在第一種情況下,您只需使用該類具有的默認ProcessStartInfo屬性。

如果您查看下面的notePad變量的成員,則ProcessStartInfo似乎是Process的子集

Process notePad = new Process(); 您會注意到 StartInfo 具有類型(或類) ProcessStartInfo ,這就是為什么兩個初始化相同的notePad.StartInfo.FileName = "notepad.exe"; vs startInfo.FileName = "notepad.exe"; 由於Process是完整的課程,我認為它可以完成ProcessStartInfo可以做的所有事情以及額外的但不要相信我的話,我只有不到一年的 .Net 經驗

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM