System.Security.SecurityContextSwitcher.Undo C# (CSharp) Method

Undo() private method

private Undo ( ) : void
return void
        public void Undo()
        {        
            if (currEC  == null) 
            {
                return; // mutiple Undo()s called on this switcher object
            }  

            if (currEC != Thread.CurrentThread.GetExecutionContextNoCreate()) 
                System.Environment.FailFast(Environment.GetResourceString("InvalidOperation_SwitcherCtxMismatch"));

            BCLDebug.Assert(currEC != null, " ExecutionContext can't be null");
            BCLDebug.Assert(currSC != null, " SecurityContext can't be null");
            if ( currSC != currEC.SecurityContext) {
                System.Environment.FailFast(Environment.GetResourceString("InvalidOperation_SwitcherCtxMismatch"));
            }

            // restore the saved security context 
            currEC.SecurityContext = prevSC;
            currEC = null; // this will prevent the switcher object being used again        

            bool bNoException = true;
            bNoException &= cssw.UndoNoThrow();


            if (!bNoException)
            {
                // Failfast since we can't continue safely...
                System.Environment.FailFast(Environment.GetResourceString("ExecutionContext_UndoFailed"));                
            }

        }
    }