Releases all resources used by the System.Runtime.InteropServices.SafeHandle class.
Calling the SafeHandle.Close or SafeHandle.Dispose method allows the resources to be freed. This might not happen immediately if other threads are using the same instance of the safe handle, but will happen as soon as that is no longer the case. Although most classes using System.Runtime.InteropServices.SafeHandle do not need to provide a finalizer, this is sometimes necessary (for example, to flush out file buffers or to write some data back into memory). In this case, they can provide a finalizer that is guaranteed to run before the System.Runtime.InteropServices.SafeHandle critical finalizer runs.
Call the SafeHandle.Close or SafeHandle.Dispose method when you are finished using the System.Runtime.InteropServices.SafeHandle object. The SafeHandle.Close method leaves the System.Runtime.InteropServices.SafeHandle object in an unusable state.
Always call the SafeHandle.Close or SafeHandle.Dispose method before you release your last reference to the System.Runtime.InteropServices.SafeHandle object. Otherwise, the resources it is using will not be freed until the garbage collector calls the System.Runtime.InteropServices.SafeHandle object's SafeHandle.Finalize method.