Call the SafeHandle.SetHandleAsInvalid method only when you know that your handle no longer references a resource. Doing so does not change the value of the SafeHandle.handle field; it only marks the handle as closed. The handle might then contain a potentially stale value. The effect of this call is that no attempt is made to free the resources.
As with the SafeHandle.SetHandle(IntPtr) method, use SafeHandle.SetHandleAsInvalid only if you need to support a pre-existing handle.