在结束过程中回收原生资源?

时间:2012-03-31 14:50:38

标签: c# .net-4.0 garbage-collection

当我在任务管理器中结束一个进程时,(杀死它)

它会运行dispose或Finilize方法吗?

什么以本地资源结束?

操作系统会清理它们吗?

3 个答案:

答案 0 :(得分:2)

Dispose / finalize / whatever - no。没有什么可以运行它们,因为操作系统首先停止或阻止进程的所有线程运行。链接到进程的所有OS本机资源 - 句柄。然后所有的记忆都被释放,这个过程就不复存在了。

它必须是这样的,以便所有用户进程,无论编码如何或他们正在做什么,都可以停止。操作系统不能与终结器等有关,否则用户进程可能变得不可阻挡。

答案 1 :(得分:1)

操作系统将负责清理所有内容。 Finalize方法不会运行。

你不能指望运行Finalize方法,因为如果你的程序陷入无限循环,操作系统将无法杀死它。

答案 2 :(得分:1)

使用任务管理器终止进程时,不会运行正常的终结例程。这个过程突然结束了。操作系统将回收本机资源和管理的资源。