许多示例和MSDN使用新的Process.Start("Application.exe", "parameter").WaitForExit().ExitCode
来获取exitcode,但是,创建一个新的变量看起来不那么优雅。所以,我试过这个
{{1}}
旨在让exitcode排成一行,但失败了。 这篇文章是否有任何解决方案?
答案 0 :(得分:2)
它不起作用,因为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");
属性。如果您希望将此行为放在一行上,则必须自己在方法中实现它并调用它。
<xsl:value-of select="count(ancestor::division[last()]/*[contains(name(), 'topic')]) + count(../preceding-sibling::division)"/>
答案 1 :(得分:0)
所以......这不是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