对于.dispose()方法的正确应用,我在.NET中从未完全掌握这一点.
说我有类似的东西
Public Class someClass()
sub someMethod
' do some stuff tying up resources
end sub
End Class
public class mainApp
dim _class as new SomeClass
_class.someMethod()
End Class
Run Code Online (Sandbox Code Playgroud)
在所有情况下,实施配置方法都是一种好的做法,如果是这样,应该在那里进行什么?
如果不是每个班级都应该有处理方法(我的直觉不应该说)应该采用什么类?我一直认为任何可能占用资源的东西(即连接,datareader等)都应该有一个.dispose()来取消分配这些资源.
另外,如何强制调用.dispose()方法?
我强烈建议阅读MSDN上的清理非托管资源,它有关于何时使用Dispose以及如何正确实现IDisposable的文章.您的直觉本质上是正确的,因为您很少需要实现IDisposable,除非您的类使用非托管资源或者是实现IDisposable的对象的容器.
至于强制调用Dispose,当你正确实现IDisposable接口时,你会附加一个终结器,它调用Dispose来捕获那些忘记的落后者和异常类.
相关文章:
描述用于释放非托管资源的Dispose方法的实现.
描述确保调用Dispose方法的方法,例如C#using语句(在Visual Basic中使用).
(编辑:添加了附加信息)
在你的例子中,你有SomeClass.SomeMethod做了一些工作,可能是一个资源.如果此资源不是类成员,则可以更好地将其包装在using语句中,并忘记IDisposable的恶魔细节.
Public Class someClass()
sub someMethod
Using someResource As New ResourceType( arguments )
' no worries about IDisposable for someResource, as it is automatic
End Using
end sub
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |