簡體   English   中英

如何編寫 Process.Start 並在一行中獲取 ExitCode?

[英]How to write Process.Start and get the ExitCode in one line?

許多示例和 MSDN 都使用新的Process來獲取退出代碼,但是,創建一個新變量看起來不那么優雅。所以,我嘗試了這個

Process.Start("Application.exe", "parameter").WaitForExit().ExitCode

旨在在一行中獲取退出代碼但失敗了。 這篇文章有什么解決方案嗎?

它不會像那樣工作,因為WaitForExit()返回一個沒有ExitCode屬性的bool 如果您希望在一行中執行此行為,則必須自己在一個方法中實現它並調用它。

public int RunAndGetCode(string executable, string parameter) 
{
    var process = Process.Start(executable, parameter).WaitForExit();
    return process.ExitCode; 
} 

// then later 
var code = RunAndGetCode("Application.exe", "parameter"); 

所以...這不是 Process 的工作原理。 您可以編寫一個包裝類,允許您在一行中完成它,或者使用 using 塊,但是當您必須等待任何進程時,這意味着您在等待它時鎖定了自己的進程。 在 Windows 中,這是可怕的做法。 它在 C# 中的設計方式允許您自己的進程在您調用的進程返回時執行其他工作。 (在移動設備上寫的;為錯誤道歉)

所以,簡而言之,不,但我認為這沒有任何問題:

Process p = new Process();
P.Start();

While(!p.WaitForExit()) {
    //do work while you wait for the calling process to return
}

var exitCode = p.ExitCode

暫無
暫無

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

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