如何终止拒绝终止的 Windows 进程

如何终止拒绝终止的 Windows 进程

运行 Windows Server 2003 时,我有一些进程,当它们被终止时,需要几分钟的 CPU 占用率才会达到 100%。

使用 Process Explorer 查看进程线程时,我总是看到 2 个线程,其中一个线程占用了大量 CPU 并卡在 !endthreadex

知道是什么原因导致这些进程这么长时间不死吗? 有什么方法可以强制终止这样的进程吗?

答案1

当您尝试终止某个进程时,Windows 会先尝试通过正常代码路径正常结束该进程,然后再强制将其关闭。该进程卡在 100% CPU 的原因很可能是您在关闭时有一个循环或类似的东西,它一直在旋转,等待某些事情发生(例如数据库连接完全关闭),而其中没有 Thread.Sleep。它所等待的事情可能从未发生(由于终止它导致异常退出),因此它会卡住,直到 Windows 决定强制将其关闭。检查该进程的关闭代码,您应该会找到罪魁祸首。

我认为,现阶段这对于 SO 来说是合适的。

相关内容