gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:03:46 30 4
gpt4 key购买 nike

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

最佳答案

如果您的进程被终止,您真的无能为力。根据定义,终止进程就是 - 终止它。该进程没有机会运行任何代码。这在很大程度上是“设计使然”。

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

另一种情况更加艰难:您的代码是良性的并且试图做正确的事情 - 例如清理并成为一个好的系统公民。有些代码不是。想象一下,如果操作系统允许为被杀死的进程运行代码,这对恶意软件作者来说将是多么大的福音。对于以标准用户权限运行的恶意进程来说,这已经够糟糕了,而对于任何以管理权限运行的恶意进程来说,这将是非常糟糕的。

关键的终结和结构化的异常处理不会解决这个根本问题。

从好的方面来说,当您的进程被终止时,操作系统将释放它所知道的所有资源,即内存和内核对象。那些不会泄漏。但是资源管理器不知道您的进程,因此无法对其进行清理。

解决此问题的一种方法是拥有一个监视进程来跟踪您的其他进程状态并为其进行清理。您可以使用简单的流程或服务来完成此操作。您还可以考虑某种 shell 扩展,它有自己的线程来做同样的事情。

关于c# - 在进程终止时释放资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/501523/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com