日期:2014-05-17  浏览次数:20997 次

非托管资源释放
C#写的dll,使用了一些给托管资源。加载这些资源很耗费时间,不卸载他们吧会留下痕迹(系统文件),想在DLL卸载的时候释放。

DLL中有一个私有静态类管理这些资源,静态类不能有析构函数,纠结。

DLL中还有一些其他公开类,都是通过私有静态类使用这些资源。

公开类可以有析构函数,释放这些资源,但是这样会导致非托管资源频繁加载、卸载,慢死了,慢的老板都想打死我了。


如果能够在DLL卸载的时候卸载这些资源就很理想了。C或者C++都很容易做到,C#我没招了。请高手赐教

------解决方案--------------------
你说的东西中哪里有非托管资源。

你应该为有非托管资源的对象编写Dispose方法,该Close的Close,该Free的Free。
------解决方案--------------------
这个私有静态类至少需要一个静态的Dispose吧。然后添加一个私有的空的单例类,在析构函数中调用这个Dispose。
------解决方案--------------------
一般是重载Dispose()方法,好好看一下这个方法是什么用的
------解决方案--------------------
典型的标题党,问的完全不是那回事。
------解决方案--------------------
对于非托管的资源,系统都会提供一些方法去释放这些资源,如果Dispose,close等