2

有没有人有关于正确使用 dispose 和 IDisposable 的好文章或教程。我试图向一些初级开发人员解释这一点,并希望获得一些额外的材料、示例等。

4

4 回答 4

6

Shawn Farkas 的这篇 MSDN 文章http://msdn.microsoft.com/en-us/magazine/cc163392.aspx是一个很好的起点。最终文章由 Joe Duffy 撰写,位于 http://www.bluebytesoftware.com/blog/2005/04/08/DGUpdateDisposeFinalizationAndResourceManagement.aspx,并在http://www.bluebytesoftware.com/blog/2008/02进行了一些跟进/18/IDisposableFinalizationAndConcurrency.aspx

于 2008-10-22T21:20:44.227 回答
1

许多旧的建议来源暗示 IDisposable 以某种方式与终结器相关联。密切关注 Herb Sutter 对此主题的评论。如果您实现 IDisposable,请不要急于得出您需要编写终结器的结论,以“确保 Dispose 最终运行,以防客户端忘记调用它”。通常情况并非如此。一个类可以实现 IDisposable 以便它可以对其拥有的托管对象进行各种调用,例如依次处理这些对象。从终结器执行此操作绝对没有意义,因为终结器无法可靠地访问其他托管对象。此外,终结器所做的任何事情都必须能够从任何线程调用。终结器是一个非常晦涩的高级事物,而 IDisposable 是一个应该无处不在的简单模式。情况进一步改变

于 2008-10-22T21:34:14.543 回答
0

这是我的。:-)

http://www.blackwasp.co.uk/IDisposable.aspx

于 2008-10-22T22:18:52.923 回答
0

告诉他们始终对一次性对象使用 using 语句。

using (MyDisposable obj = new MyDisposable())
{
  obj.some_stuff();

} //obj is disposed here
于 2008-10-23T02:18:58.057 回答