The Microsoft.NET framework provides the IDisposable
interface which requires an implementation of void Dispose()
method. Its purpose is to enable
should the implementation of the
Dispose()
method be idempotent
Yes, it should. There is no telling how many times it will be called.
From Implementing a Dispose Method on MSDN:
a Dispose method should be callable multiple times without throwing an exception.
An object with a good implementation of IDispose
will have a boolean field flag indicating if it has been disposed of already and on subsequent calls do nothing (as it was already disposed).