如何释放进程的所有资源?

时间:2010-12-04 07:07:05

标签: c# process file-management unmanagedresources

我正在运行一个进程,即创建一个文件并使用该文件。 在该过程结束后,我将删除该文件。

如果之间出现了一些异常,那么如何知道该进程是否释放该文件,以及如果该进程已锁定该文件,该如何删除该文件。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

在Windows上,当进程结束时,操作系统会自动返回该进程拥有的所有资源。故事结束。

例如,假设您在两个进程中的每个进程上都执行了“CreateFileMapping()”来共享内存段。当第一个进程退出时,Windows会减少使用计数器,只有幸存的进程仍然可以使用该对象。当第二个进程执行“CloseHandle()”(或其自身退出)时,计数器将递减为零,并且对象完全被释放。

换句话说,Windows将在不再使用资源时回收资源,无论这些进程是否自行清理。

不,即使您打开文件进行独占访问,一旦文件句柄关闭,文件本身也不会被“锁定”(Windows会在程序终止时自动将其关闭)。

答案 1 :(得分:0)

当你的程序结束时 - 无论用什么方式 - 文件(如果它仍然存在)将不再被进程锁定...因为该进程不存在。

但我不得不怀疑;如果文件最后还是被删除了,你真的需要首先创建一个文件吗?