目录:
定义-处置是什么意思?
在C#上下文中,dispose是调用的对象方法,用于执行内存清理,释放和重置非托管资源(例如文件句柄和数据库连接)所需的代码。 Dispose通过释放难以管理的对象和稀缺资源(例如在Windows空间受限的应用程序中使用的图形设备接口(GDI)句柄)来提高性能并优化内存。
IDisposable接口提供的Dispose方法可实现Dispose调用。 处置模式旨在及时,可预测地进行清理,防止临时内存泄漏和资源处置。
技术百科解释了处置
.NET框架可通过调用Finalize(一种非确定性方法)来促进垃圾回收(GC),管理对象内存和资源并回收无效的对象内存引用。 Dispose方法控制对象内存实例的生命周期,并提供显式的内存清理控制,而不是Finalize的隐式内存清理。 即使存在其他内存对象实例,也可以调用dispose,而Finalize只能在销毁最后一个内存对象之后调用。
处置方法规则如下:
- 用于需要使用后立即释放的非托管资源。
- 如果未调用Dispose,则应实现Finalize方法。
- 调用Dispose方法后,必须调用GC.SuppressFinalize方法来避免Finalize方法并避免不必要的GC。
- 如果多次调用Dispose方法,则应谨慎处理异常。 如果处理了资源,则任何实例方法都可能引发ObjectDisposedException。
- 具有先前称为Dispose方法的对象可能无法重用。
- 建议仅将Dispose用于暴露给.NET Framework的本机资源对象和组件对象模型(COM)对象的管理。
- 由于无法预测的结果,可能无法从多个线程同时调用Dispose。
- 值类型不应创建为一次性类型或使用非托管资源成员创建。
- 使用非托管资源时,最好的做法是应用源代码的Using语句,该语句在完成对象代码后自动调用对象的Dispose方法。
