C# 中非托管对象的处理
假设我有一个类,其中包含 MyCustomDatabaseAccess 作为数据成员。 MyCustomDatabaseAccess 有一个 Dispose() 方法。 MyCustomDatabaseAccess 是访问数据库的中间件类。
public class MyClass {
private MyCustomDatabaseAccess db_access;
}
MyClass需要实现IDisposable接口吗?
我现在的解决方案是做这样的事情:
public class MyClass {
private MyCustomDatabaseAccess db_access;
public void GetDBResults () {
db_access = new MyCustomDatabaseAccess();
DataTable dt = db_access.ExecuteStoredProc(param1, param2, etc..);
//do stuff with results
db_access.Dispose();
}
}
根据我在 MSDN 上读到的内容,确保正确处置该对象的另一种方法是让 MyClass 实现 IDisposable 接口,然后实现 Dispose() 函数,然后调用它在调用 MyClass 对象的类中。 请参阅此了解更多信息 http://www.devx.com/dotnet/Article/33167/0 /page/3
哪种方式更好,为什么? 谢谢!
Let's say I have a class that has a MyCustomDatabaseAccess as a data member. MyCustomDatabaseAccess has a Dispose() method. MyCustomDatabaseAccess is the middleware class that accesses the database.
public class MyClass {
private MyCustomDatabaseAccess db_access;
}
Does MyClass need to implement IDisposable interface?
My solution right now is to have do something like this:
public class MyClass {
private MyCustomDatabaseAccess db_access;
public void GetDBResults () {
db_access = new MyCustomDatabaseAccess();
DataTable dt = db_access.ExecuteStoredProc(param1, param2, etc..);
//do stuff with results
db_access.Dispose();
}
}
From what I read on MSDN, another way to make sure that this object is disposed of properly would be to have MyClass implement IDisposable interface, then implement a Dispose() function, then call it in the class that calls an object of MyClass.
see this for more info
http://www.devx.com/dotnet/Article/33167/0/page/3
Which way is preferable and why?
thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(4)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我建议使用以下两种方法之一:
您应该选择哪个取决于对象所需的生命周期。
I would suggest using one of the following two approaches:
Which you should choose depends on the required lifetime of the object.