2016-09-18 11 views
-2

多くの例とMSDNの終了コードを取得するには、新しいProcessを使用している、しかし、新たな変数をレコード生成することはそれほどではないに見えるgrace.Soは、私は1つのラインで終了コードを取得することを目的としたこのProcess.Startを記述し、ExitCodeを1行で取得する方法は?

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

を試みたが、失敗しました。 この記事の解決方法はありますか?

+0

:;(モバイルデバイス上でこれを書いたエラーの謝罪を)

をだから、要するに、いや、私はこれで間違って何も見えません。 :/ http://stackoverflow.com/a/1585375/3956100 – Niklas

答えて

0

これは、Processの仕組みではありません。あなたは1行でやることができるラッパークラスを書くこともできますし、使用ブロックを使うこともできますが、プロセスを待つ必要があるときには、それを待っている間に自分のプロセスをロックします。 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 
2

WaitForExit()boolを返し、ExitCodeプロパティを持たないため、このように機能しません。この動作を1行に記述するには、メソッド内でそれを実装して呼び出す必要があります。

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

ありがとう、私は1行でwrittingが実現できないことを実現しました... – PeoLeser

関連する問題