When overridden in a derived class, releases the unmanaged resources used by the System.Threading.WaitHandle, and optionally releases the managed resources.
This method is called by the WaitHandle.Dispose() method and the Finalize method. Dispose() invokes this protected method with the explicitDisposing parameter set to true. Finalize invokes Dispose with explicitDisposing set to false.
When the explicitDisposing parameter is true, this method releases all resources held by any managed objects that this WaitHandle references. This method invokes the Dispose() method of each referenced object.
Dispose can be called multiple times by other objects. When overriding this method, be careful not to reference objects that have been previously disposed in an earlier call to Dispose or Close.