1
我有下面的代码:Process.Kill是否释放诸如文件句柄之类的资源?
proc.Start(); // "proc" opens "foo.txt" and reads it.
proc.Kill();
proc.WaitForExit();
cleanup(); // deletes "foo.txt"
我得到一个异常,告诉我“foo.txt的”正在被另一个进程使用。唯一可能使用“foo.txt”的进程是“proc”,我已经杀死并等待其退出。
Process.Kill是否不释放死亡进程的资源?如果是这样,我该如何释放死亡进程所持有的资源,以便我可以清理。
谢谢。
看看,如果你调用'proc.Dispose()'立即清理之前'()'会发生什么? – 2014-11-22 05:06:20
'Process.Kill'什么都不做,除了表示终止进程。当一个进程终止时,当它的句柄被关闭时。我认为三个边缘情况下程序可以“退出”和“WaitForExit”可以返回,但程序尚未“终止”,但仍然有一些句柄。 – 2014-11-22 05:07:01
也可以在cleanup()之前尝试GC.Collect,看看会发生什么。 – Alexandru 2014-11-22 05:08:14