如何知道是否已释放IDisposable对象?
原因:
我有一个GraphicsPath(IDisposable)集合,我使用OnMouseMove。
有时,我会清除集合并释放对象,然后再重新填充它。
我用少量的点(2-10点)来构建路径,但有时我会看到集合中的路径有成百上千个点,这是不可能的。我想当我到达这个密码时,路径可能已经被处理好了.相关
发布于 2011-02-11 10:57:42
通常,无法知道在一次性对象上是否调用了Dispose。但是,某些类型(如WinForms Control类型)确实公开了IsDisposed属性或类似的属性。
由于客户端代码一开始就需要决定性地控制一次性对象的“生存期”(通常情况下,已释放的对象应该很快就无法到达,因此人们不太可能想要释放某些东西,但却长期保存对它的引用),因此不需要这种功能。
下面这样的代码很可能需要更改设计:
if(!myDisposable.IsDisposed)
myDisposable.DoSomething(); 当然,如果您确实需要这个特性,而且类型不提供它,您可以自己手动实现它。例如,您可以将其包装在一个公开了一个class DisposableWrapper<T> : IDisposable where T : Disposable属性的IsDisposed中,并希望您通过包装器的Dispose方法来释放包装对象,该方法负责相关的簿记工作。
发布于 2011-02-11 10:57:37
处理只是一种方法。如果不添加像wasDisposed这样的标志,就不可能知道。
https://stackoverflow.com/questions/4968184
复制相似问题