【发布时间】:2013-08-27 15:37:47
【问题描述】:
我最近看到了一些生产代码,效果如下:
if (Process.GetCurrentProcess().HasExited)
{
// do something
}
这有意义吗?直观地说,如果进程已经退出,那么其中就不能运行任何代码。
如果没有,什么是判断当前进程是否终止的好方法?
如果它可能具有任何相关性,则其用例是避免弹出断言,例如在进程被终止时未释放的对象。
【问题讨论】:
-
这对我来说很有意义,你有什么问题?
-
正如我所说,“直观地说,如果进程已经退出,那么它里面就不能运行任何代码。”因此这段代码永远不会运行并且毫无意义。
-
代码在什么上下文中运行?我的意思是这里的多线程。
-
这是个好问题。如果进程退出,内存中是否还有存储数据的地方?
-
“弹出断言”? “进程被杀死时对象没有被处理”?这没有意义……把整个事情都拿出来。