【发布时间】:2010-12-30 11:51:43
【问题描述】:
有多个线程(a、b、c 等)关于 Clear() .NET 组件容器中的项目不 Dispose 他们(通过调用 Dispose(true)。
恕我直言,大多数情况下,应用程序中不再使用已清除的组件,因此需要在从父容器中清除它们后显式处置。
也许集合的Clear 方法有一个布尔参数dispose 是个好主意,当它为true 时也会在集合元素从列表中删除之前对其进行处置?
【问题讨论】:
-
如果在终结器中有对 Dispose 的调用,它们将被释放。如果没有,那么可能(如果程序员遵循公认的做法)没有任何无法处理的东西,只是垃圾收集它们是安全的。
-
@Aviad:Dispose方法永远不会被GC调用的问题,所以你需要自己做,然后再调用Clear on collection。
-
我的意思是,如果控件的程序员没有在其终结器中放置 Dispose 调用(当对象被垃圾回收时调用) - 那么可能没有任何东西可以释放。
-
这里也可以看Hans对问题的详细描述:stackoverflow.com/a/2014427/366904
标签: .net garbage-collection components dispose