我正在尝试运行一个可能由于各种原因而挂起的进程。我在计时器中递归地运行该过程,所以如果它挂起,我会得到计时器运行的多个线程,并且一团糟。我正在尝试使用 Process.WaitForExit 来终止该进程,如果它没有在指定的时间内完成,但是 WaitForExit 的超时似乎无关紧要,因为 ReadToEnd 似乎已经在等待它完成或没有根据情况而定?即我可以将超时设置为一秒,但它仍然不会杀死我的进程?
Process myProcess = new Process();
Processfinished = false;
myProcess.StartInfo = new ProcessStartInfo(process.exe)
{
RedirectStandardOutput = true,
Arguments = ......,
UseShellExecute = false,
CreateNoWindow = false
};
myProcess.Start();
string result = myProcess.StandardOutput.ReadToEnd();
if(APS.WaitForExit(20000))
{
Processfinished = true;
}
else
{
myProcess.Kill();
_log?.LogInformation($"{process.exe} did not finish in time ... process killed");
}