微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

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

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

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

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

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

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

原文地址:https://www.jb51.cc/csharp/97546.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐