我使用以下命令来运行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();
我的问题是我需要等到上述过程完成并尽快关闭它。
有什么建议吗?
答案 0 :(得分:5)
您可以将p.WaitForExit(2000000)
替换为p.WaitForExit();
,以便管理运行时间超过2000000毫秒的情况。
答案 1 :(得分: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();
它将等到您的过程完成。有关详细信息,请参阅the documentation on 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();