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

您可以替换p.WaitForExit(2000000)p.WaitForExit();以管理进程运行时间超过 2000000 毫秒的情况。

关联

于 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 回答