是否可以在不引发异常的情况下多次调用.Dispose
同一个实例?IDisposable
对此有什么定义吗?
例如:
public class Test : IDisposable
{
public void Dispose()
{
// What ever
}
}
var t = Test();
t.Dispose();
t.Dispose(); // Should this work in any case?
我问这个的原因:
我创建了一些机制,它在VisualTree
for 元素中搜索,这些元素继承自IDisposable
,但我不能确定这些元素中的一个是否已被处置。
从窗口类中截取的一些代码
/// <summary>
/// Dispose
/// </summary>
public void DisposeAll()
{
foreach (var obj in WPFVisualTreeHelper.FindChildren<IDisposable>(this))
{
if (!disposables.Contains(obj))
{
disposables.Add(obj);
}
}
foreach (IDisposable disposable in disposables)
{
disposable.Dispose();
}
}
谢谢!