c# – 在进程终止时释放资源

当进程被例如任务管理器杀死时,如何释放资源?有没有办法在进程关闭之前调用函数

解决方法

如果你的进程被杀,你真的无能为力.根据定义,杀死一个进程只是 – 杀死它.该过程没有机会运行任何代码.这非常“按设计”.

想象一下,您可以注册在您的进程被用户(或其他进程)杀死时调用的例程.它会做什么?您流程中的所有其他线程都处于不确定状态,您将如何与它们同步?请记住,这个想法是需要杀死这个过程.

另一种情况甚至更难:你的代码是良性的,并试图做正确的事情 – 例如清理并成为一个好的系统公民.有些代码不是.想象一下,如果操作系统允许为正在被杀死的进程运行代码,那将对恶意软件作者带来什么好处.对于使用标准用户权限运行的恶意进程而言,这对于任何具有管理权限的运行来说都是非常糟糕的.

关键的最终结构和结构化异常处理不能解决这个基本问题.

从好的方面来说,操作系统将释放它在处理过程中所知道的所有资源,即内存和内核对象.那些不会泄漏.但是资源管理器并不了解您的流程,因此无法清理它.

解决此问题的一种方法是建立一个监控流程来跟踪您的其他流程状态并清理它.您可以通过简单的流程或服务来完成此操作.你也可以考虑某种shell扩展,它有自己的线程做同样的事情.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...