C#WPF在x时间后终止进程:IvalidOperationException:进程终止

时间:2017-04-28 18:04:54

标签: c# wpf process waitforexit

我知道,我知道,在C#中x时间之后如何杀死进程有很多问题和好的答案。

然而,在读取和编写代码来完成此任务之后,我发现在X时间之后杀死进程是不可能的。由于我在C#中的新手,我发现很难理解错误的原因并纠正它。

我想要实现的任务是在40分钟后终止进程,通过单击按钮启动该进程。我正在写信给控制台:

private void click_start(Object sender, RoutedEventArgs e) {

  using(Process p = Process.Start(@"calc.exe");
  {
   try{
      p.WaitForExit(5000);
      if(!p.HasExited) {
        p.kill();
        Console.WriteLine("Kill process waitforexit is false");
       } else {
        Console.WriteLine("NO Kill, waitforexit is true");
       }
     }
    catch (Exception ex) {
       Messageox.Show(ex.Messaage);
    }
}

在SO中的所有答案中,这是广义接受的答案。

在VS 2015上运行代码时,调试器给出了这个错误: "无法处理请求,因为流程已完成。" 也总是得到相同的控制台行:没有kill,表明WaitForExit仍然是真的。在等待超过10分钟的事件之后,杀死的时间设置为不到一分钟。

所以我不明白:我启动了这个过程但是当被命令杀人时,它还没有完成?

2 个答案:

答案 0 :(得分:0)

尝试这样

if(!p.WaitForExit(5000))
    p.kill();

我不确定您的流程的动态,但是,尤其是在调试过程中, 你可能在一个或另一个电话之间有相对较大的延迟,这可能会导致这种行为。

答案 1 :(得分:0)

一个好人timer ...虽然...... {/ p>正在使用WaitForExit

Process p = Process.Start(@"cal.exe");
using (var t = new Timer(delegate { p.Kill(); }, null, 5000, Timeout.Infinite))
{ 
  //what to do?
}