0

我正在尝试运行一个可能由于各种原因而挂起的进程。我在计时器中递归地运行该过程,所以如果它挂起,我会得到计时器运行的多个线程,并且一团糟。我正在尝试使用 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");   
       }
          
            
     
4

0 回答 0