我想确保我的逻辑在这里是正确的。我想将一个进程运行timeout
几秒钟,如果运行时间更长,则应立即将其终止。
该completed
标志应可靠地指示过程是否按预期完成,例如是否被终止,未崩溃或未引发异常。
另外,如果检查process.HasExited
正确,我也不肯定。如果process.WaitForExit()
返回false并Kill()
成功,那么将process.HasExited
始终为true?那是我的假设,但我想确认。另外,如果Kill()失败,除了日志记录之外还能做什么?
using (process = new Process())
{
process.EnableRaisingEvents = true;
process.OutputDataReceived += new DataReceivedEventHandler(OnOutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(OnErrorDataReceived);
process.Exited += new EventHandler(OnExited);
process.StartInfo = startInfo;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
if (!process.WaitForExit(timeout))
{
try
{
process.Kill();
}
catch (Exception e)
{
LogError(e, MethodBase.GetCurrentMethod());
}
finally
{
this.completed = false;
}
}
else
{
if (process.HasExited)
{
this.code = process.ExitCode;
this.completed = true;
}
else
{
this.completed = false;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句