我知道,我知道,在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分钟的事件之后,杀死的时间设置为不到一分钟。
所以我不明白:我启动了这个过程但是当被命令杀人时,它还没有完成?
答案 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?
}