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

C# 如何设置最大方法执行时间,c#,methods,process,execution-time,C#,Methods,Process,Execution Time,我有一个方法,其中包含一个进程,无论它是否完成,都必须在截止日期(例如:3秒)内停止,我不想在到达死线之前等待它是否完成执行。 使用Process.WaitForExit(3000)使程序等待3秒,即使进程在达到限制之前已停止。 还有一件事,我正在使用process.StandardOutput.ReadToEnd();要读取执行结果,我不关心它是否返回null或空字符串,或者如果它没有完成,则返回什么。 我想定时器也会引起同样的问题。 有什么想法吗?退出可以处理流程的事件以检测退出时间。 Wa

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

有什么想法吗?

退出
可以处理流程的事件以检测退出时间。
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");
}

您的
Process.WaitForExit
始终等待整整3秒钟的语句不正确。我已将其设置为显示执行'dir'cmd命令的结果,它每次等待3秒钟。您向它传递的是什么命令?无论你在做什么,都不能正常退出。例如,要执行
dir
,您需要使用
/C dir
的参数运行
cmd
。我知道。。实际上,如果没有“/c dir”,命令将无法在allOK下执行,我刚刚用
cmd
/c dir
进行了测试,超时时间为10秒,它工作正常并立即退出。@user3379482现在通过修改procInfo的一些属性,StandardOutput.ReadToEnd可以在退出的事件处理程序中使用。