终止进程(被终止)的最不合适的方式?

时间:2013-12-19 07:57:00

标签: c# .net windows winapi

真正终止流程的最不合适的方式是什么?

我尝试使用 Process.Kill (System.Diagnostics),但它有一个缺点,使它对我无用:

  

如果在进程当前正在终止时调用Kill方法,则会为Access Denied抛出Win32Exception。

我实际上正在处理一个经常崩溃的应用程序(不是我的应用程序),甚至会以只重启会有帮助的方式卡在终止进程中。

运行 TASKKILL / F / IM ... 也会以“拒绝访问”退出。我还尝试过P / Invoke TerminateProcess()

虽然这个问题可能有些奇怪,但我非常感谢你的回答。

2 个答案:

答案 0 :(得分:1)

在提出这个问题之后不久我就弄清楚了为什么应用程序会以只有重启会有帮助的方式挂起(many thanks to this answer!): Avast Anti-Virus 。一旦我从所有工作站中删除了该软件,第三方应用程序仍然会崩溃,但在执行此操作后实际终止,因此可以再次运行。

非常感谢!

答案 1 :(得分:0)

看看这是否有帮助

private void Test(){
    KillProcess("notepad");
}

private void KillProcess(string processName) {
    Process[] appProcesses = Process.GetProcessesByName(processName);

    if(appProcesses.Length == 0)
        return;

    // Kill and wait for app to exit
    appProcesses[0].Kill();
    appProcesses[0].WaitForExit();
}