我的方法包含一个必须在截止日期前停止的过程(例如:3秒),无论是否已经完成,我不想等待它已经完成之前达到那条死线。
使用Process.WaitForExit(3000)使程序等待3秒,即使进程在达到限制之前已停止。
还有一件事,我使用process.StandardOutput.ReadToEnd();要读取执行结果,我不在乎它是否返回null或空字符串或者如果它没有完成则不管怎样。
我想定时器会引起同样的问题
任何想法?
答案 0 :(得分:0)
Exited
您的过程事件以检测退出时间
WaitForExit
返回一个布尔值,表示您的进程在退出之前已达到超时。
测试此代码:
Process proc = new Process();
ProcessStartInfo procInfo = new ProcessStartInfo()
{
FileName = "d:/test.exe",
UseShellExecute = false,
RedirectStandardOutput = true
};
proc.StartInfo = procInfo;
proc.EnableRaisingEvents = true;
proc.Exited += (o, args) =>
{
MessageBox.Show(proc.StandardOutput.ReadToEnd());
};
proc.Start();
if (proc.WaitForExit(3000))
{
MessageBox.Show("YES");
}
else
{
MessageBox.Show("NO");
}