Winforms处置ID是可处理的

本文关键字:可处理 ID 处置 Winforms | 更新日期: 2023-09-27 17:47:22

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

Winforms处置ID是可处理的

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

许多关于此的建议来源意味着 IDisposable 以某种方式链接到终结器。密切关注赫伯·萨特(Herb Sutter)对这个问题的评论。不要妄下结论,即如果你实现 IDisposable,你需要编写一个终结器,以"确保 Dispose 最终运行,以防客户端忘记调用它"。通常情况并非如此。类可以实现 IDisposable,以便它可以对其拥有的托管对象进行各种调用,例如依次释放这些对象。从终结器中执行此操作绝对没有意义,因为终结器无法可靠地访问其他托管对象。此外,终结器所做的任何事情都必须能够从任何线程调用。终结器是一个非常晦涩的高级东西,而 IDisposable 是一种应该无处不在的简单模式。SafeHandle的出现进一步改变了这种情况。

这是我的。

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

告诉他们始终在一次性物品上使用 using 语句。

using (MyDisposable obj = new MyDisposable())
{
  obj.some_stuff();
} //obj is disposed here