2016-09-18 7 views
-2

Viele Beispiele und MSDN eine neues Process mit dem Exit-Wert zu erhalten, sieht eine neue Variable grace.So Creat jedoch nicht so, habe ich versucht, dieseWie schreibt man Process.Start und bekommt den ExitCode in einer Zeile?

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

Ziel, den Exit-Wert in einer Zeile zu erhalten, aber gescheitert. Und gibt es eine Lösung für dieses Schreiben?

+0

von Google zu fragen. :/http://stackoverflow.com/a/1585375/3956100 – Niklas

Antwort

0

Also ... Das ist nicht ganz so, wie Prozess funktioniert. Sie könnten eine Wrapperklasse schreiben, die es Ihnen erlaubt, dies in einer einzigen Zeile zu tun oder einen using-Block zu verwenden, aber wenn Sie auf einen Prozess warten müssen, bedeutet das, dass Sie Ihren eigenen Prozess sperren, während Sie darauf warten. In Windows ist das eine schreckliche Übung. Die Art, wie es in C# entworfen wurde, ermöglicht es Ihrem eigenen Prozess, andere Arbeiten auszuführen, während der von Ihnen aufgerufene Prozess zurückgekehrt ist. (Schrieb diese auf dem mobilen Gerät, Entschuldigungen für Fehler)

Also, kurz gesagt, nein, aber ich sehe nichts falsch mit diesem:

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

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

var exitCode = p.ExitCode 
2

Es funktioniert nicht so, weil WaitForExit() eine bool zurückgibt, die keine ExitCode Eigenschaft hat. Wenn Sie dieses Verhalten in einer Zeile haben möchten, müssen Sie es selbst in einer Methode implementieren und aufrufen.

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

Danke, ich erkannte, dass das Schreiben in einer Zeile nicht möglich ist ... – PeoLeser

Verwandte Themen