Composite.GlobalInitializerFacade.ReleaseWriterLock C# (CSharp) Метод

ReleaseWriterLock() приватный статический Метод

private static ReleaseWriterLock ( ) : void
Результат void
        private static void ReleaseWriterLock()
        {
            int threadId = Thread.CurrentThread.ManagedThreadId;

            if ((_threadLocking.WriterLocksPerThreadId[threadId] == 1) &&
                (_threadLocking.LockCookiesPerThreadId.ContainsKey(threadId)))
            {
                LockCookie lockCookie = _threadLocking.LockCookiesPerThreadId[threadId];

                lock(_threadLocking)
                {
                    _threadLocking.LockCookiesPerThreadId.Remove(threadId);
                }

                _readerWriterLock.DowngradeFromWriterLock(ref lockCookie);
            }
            else
            {
                _readerWriterLock.ReleaseWriterLock();
            }

            lock (_threadLocking)
            {
                _threadLocking.WriterLocksPerThreadId[threadId] = _threadLocking.WriterLocksPerThreadId[threadId] - 1;

                if (_threadLocking.WriterLocksPerThreadId[threadId] == 0)
                {
                    _threadLocking.WriterLocksPerThreadId.Remove(threadId);
                }
            }
        }