此标题可以为“.NET 框架如何正确的释放资源”。参考:https://www.cnblogs.com/fdyang/p/3456258.html
托管的内存资源,这是不需要我们操心的,系统已经为我们进行管理了。
对于非托管的资源,这里再重申一下,就是Stream,数据库的连接,GDI+的相关对象,还有Com对象等等这些操作系统资源,需要我们手动去释放。
如何去释放,应该把这些操作放到哪里比较好呢。.Net提供了三种方法,也是最常见的三种,大致如下:
1. 析构函数;
2. 继承IDisposable接口,实现Dispose方法;
3. 提供Close方法。
| 析构函数 | Dispose方法 | Close方法 |
意义 | 销毁对象 | 销毁对象 | 关闭对象资源 |
调用方式 | 不能被显示调用,会被GC调用 | 需要显示调用 或者通过using语句 | 需要显示调用 |
调用时机 | 不确定 | 确定,在显示调用或者离开using程序块 | 确定,在显示调用时
|