Shoud disposing the same instance multiple times be possible
<p>Should it be possible, to call <code>.Dispose</code> for the same instance of <code>IDisposable</code> multiple times without throwing an exception? Is there some definition for this?</p>

<p>For example:</p>

<pre><code>public class Test : IDisposable
{
    public void Dispose()
    {
        // What ever
    }
}

var t = Test();
t.Dispose();
t.Dispose(); // Should this work in any case?
</code></pre>

<p>The reason why I'm asking this:</p>

<p>I've created some mechanism, which search in the <code>VisualTree</code> for elements, which inherit from <code>IDisposable</code>, but i can not be sure, that one of these elements gets disposed before.</p>

<p><em>Some code snipped from a window class</em></p>

<pre><code>/// &lt;summary&gt;
/// Dispose
/// &lt;/summary&gt;
public void DisposeAll()
{
    foreach (var obj in WPFVisualTreeHelper.FindChildren&lt;IDisposable&gt;(this))
    {
        if (!disposables.Contains(obj))
        {
            disposables.Add(obj);
        }
    }
    foreach (IDisposable disposable in disposables)
    {
        disposable.Dispose();
    }
}
</code></pre>

<p>Thank you!</p>