【问题标题】:How to write Process.Start and get the ExitCode in one line?如何编写 Process.Start 并在一行中获取 ExitCode?
【发布时间】:2016-09-18 04:32:27
【问题描述】:

许多示例和 MSDN 都使用新的Process 来获取退出代码,但是,创建一个新变量看起来并不那么优雅。所以,我尝试了这个

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

旨在在一行中获取退出代码,但失败了。 写这篇文章有什么解决办法吗?

【问题讨论】:

标签: c# syntax


【解决方案1】:

因为WaitForExit() 返回一个bool,它没有ExitCode 属性,所以它不会这样工作。如果你想在一行中实现这种行为,你必须自己在一个方法中实现它并调用它。

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

【讨论】:

    【解决方案2】:

    所以... 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      相关资源
      最近更新 更多