0

次のコマンドを使用して、bat ファイルを実行しています。

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.FileName = "d:/my.bat";
p.Start();
p.WaitForExit(2000000);               
p.Close();
p.Dispose();

私の問題は、上記のプロセスが完了するまで待って、できるだけ早く閉じる必要があることです。

助言がありますか?

4

2 に答える 2

5

プロセスの実行に 2000000 ミリ秒以上かかる場合を管理するために、 にp.WaitForExit(2000000)置き換えることができます。p.WaitForExit();

リンク

于 2012-09-26T14:22:53.880 に答える
2

WaitForExit次のようなパラメーターなしで使用するだけです。

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.FileName = "d:/my.bat";
p.Start();
p.WaitForExit();
p.Close();
p.Dispose();

プロセスが完了するまで待機します。詳細については、MSDN のドキュメントを参照してください。

別の方法として、特にユーザーにフィードバックを提供したい場合は、次のようにすることができます。

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.FileName = "d:/my.bat";
Console.Write("Running {0} ", p.StartInfo.FileName)
p.Start();
while (!p.HasExited)
{
    Console.Write(".");
    // wait one second
    Thread.Sleep(1000);
}
Console.WriteLine(" done.");
p.Close();
p.Dispose();
于 2012-09-26T14:23:38.073 に答える