System.Threading.Mutex.MutexCleanupCode C# (CSharp) Method

MutexCleanupCode() private method

private MutexCleanupCode ( Object userData, bool exceptionThrown ) : void
userData Object
exceptionThrown bool
return void
        private void MutexCleanupCode(Object userData, bool exceptionThrown)
        {
            MutexCleanupInfo cleanupInfo = (MutexCleanupInfo) userData;
            
            // If hasThreadAffinity isn’t true, we’ve thrown an exception in the above try, and we must free the mutex 
            // on this OS thread before ending our thread affninity.                
            if(!hasThreadAffinity) {
                if (cleanupInfo.mutexHandle != null && !cleanupInfo.mutexHandle.IsInvalid) {
                    if( cleanupInfo.inCriticalRegion) {
                        Win32Native.ReleaseMutex(cleanupInfo.mutexHandle);                    
                    }
                    cleanupInfo.mutexHandle.Dispose();                        
                    
                }
                    
                if( cleanupInfo.inCriticalRegion) {
                    Thread.EndCriticalRegion();
                    Thread.EndThreadAffinity();
                }                    
            }
        }