2008-10-16 75 views
1

我通过使用System.Diagonistics.Process并传递两个文件名作为参数来调用外部进程。现在有一段时间这个进程因异常而终止,看起来文件句柄不会被进程释放。我怎样才能释放进程占用的资源?如何释放进程的资源

回答

0

你如何检测文件句柄没有被死亡过程释放?

所有资源都应该由一个进程释放,因为任何原因死亡。如果他们不是,那么这是一个应该提交给微软的错误。

+0

微软的bug是怎么回事? OP正在启动他的应用程序的外部进程,然后随后终止异常。如果该进程打开了文件句柄,那么进程就有责任正确关闭它们。 – 2008-10-16 23:32:54

+2

操作系统负责关闭进程终止时保持打开的任何句柄。 – 2008-10-17 03:10:58

1

什么让你觉得文件句柄没有被释放?由于您正在启动一个在您的应用程序外部的进程,因此您无法控制其他进程在异常终止时将执行的操作。

1

此应用程序是WMVAppend.exe(与Microsoft Media SDK一起提供)。即使我们重新启动机器,它也会报告错误对话并在下次运行中正常工作。只有媒体追加这个问题不是我们的流程完成的。我也检查了源文件,它们看起来很完美,但它们没有完美附加,并且文件无法使用。

或者它可能是可能的进程没有终止,但我使用Process.WaitForExit()应该只返回进程被终止。重新启动时的错误对话框表明我可能会遇到这种情况。