如何设置方法的最大执行时间

本文关键字:执行时间 方法 何设置 设置 | 更新日期: 2023-09-27 18:03:35

我有一个方法,它包含一个必须在截止日期(例如:3秒)内停止的进程,无论它是否已经完成,我不想等待,如果它已经完成执行之前达到那个截止日期。
使用process . waitforexit(3000)使程序等待3秒,即使进程在达到限制之前已经停止。
还有一点,我使用process.StandardOutput.ReadToEnd();来读取执行结果,我不关心它是否返回null或空字符串或其他什么,如果它没有完成。我想计时器也会引起同样的问题。
什么好主意吗?

如何设置方法的最大执行时间

可以处理进程的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");
}