System.Net.AutoWebProxyScriptEngine.EnterLock C# (CSharp) Method

EnterLock() private method

private EnterLock ( int &syncStatus ) : void
syncStatus int
return void
        private void EnterLock(ref int syncStatus)
        {
            if (syncStatus == SyncStatus.Unlocked)
            {
                lock (this)
                {
                    if (syncStatus != SyncStatus.Aborted)
                    {
                        syncStatus = SyncStatus.Locking;
                        while (true)
                        {
                            if (!m_LockHeld)
                            {
                                syncStatus = SyncStatus.LockOwner;
                                m_LockHeld = true;
                                return;
                            }
                            Monitor.Wait(this);
                            if (syncStatus == SyncStatus.Aborted)
                            {
                                Monitor.Pulse(this);  // This is to ensure that a Pulse meant to let someone take the lock isn't lost.
                                return;
                            }
                        }
                    }
                }
            }
        }