【发布时间】:2013-08-15 07:51:18
【问题描述】:
在我的代码中,当发生以下任一情况时,我需要调用Process.Kill() 即declared in MSDN 来抛出Win32Exception
- 无法终止关联的进程。
- 进程正在终止。
- 关联的进程是 Win16 可执行文件。
有时我确实面对Win32Exception 和Access is denied 消息和NativeErrorCode 设置为5。MSDN 说当进程终止时调用Kill() 时会发生这种组合。其他两个案例没有详细记录。
所以我需要合理处理这种情况。当然我可以抓住Win32Exception,但我怎么知道它到底为什么被抛出?如果进程已经终止并且可能在所有其他情况下重新抛出异常,我不需要做任何事情。
我如何识别和处理这种特殊情况?
【问题讨论】:
-
我能问一下你为什么需要打电话给
Process.Kill吗?我假设你唯一调用它是因为程序导致了某种错误 -
@Sayse:我想确保进程在规定的时间内终止。
-
您或用户是否开始关闭应用程序?如果它是以编程方式启动的杀死/关闭,您能否跟踪?
-
@Default:我不在乎它是否启动了 X/Y - 无论如何我都需要终止进程。终止 - 就是这样。
-
从我读到的,看起来你的 try catch 是你最好的选择(你显然可以在这里使用 NativeErrorCode),还有 ExitCode 但这只是 -1 所以可能没有帮助
标签: c# .net process access-denied win32exception