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

时间:2016-08-22 09:55:34

标签: c# methods process execution-time

我的方法包含一个必须在截止日期前停止的过程(例如:3秒),无论是否已经完成,我不想等待它已经完成之前达到那条死线。
使用Process.WaitForExit(3000)使程序等待3秒,即使进程在达到限制之前已停止。
还有一件事,我使用process.StandardOutput.ReadToEnd();要读取执行结果,我不在乎它是否返回null或空字符串或者如果它没有完成则不管怎样。 我想定时器会引起同样的问题 任何想法?

1 个答案:

答案 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");
}