Пример #1
0
        /// <summary>
        /// Performs a protected action with the writer lock.
        /// </summary>
        /// <param name="action">The action to perform.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="action"/> is null.</exception>
        public static void WithWriterLock(ProtectedAction action)
        {
            if (action == null)
                throw new ArgumentNullException("action");

            @lock.EnterWriteLock();
            try
            {
                action();
            }
            finally
            {
                @lock.ExitWriteLock();
            }
        }
Пример #2
0
        public void Do(ProtectedAction action)
        {
            try
            {
                if (entered)
                {
                    ThrowRecursionDetected();
                }

                entered = true;
                action();
            }
            finally
            {
                entered = false;
            }
        }
Пример #3
0
        /// <summary>
        /// Performs a protected action with the writer lock.
        /// </summary>
        /// <param name="action">The action to perform.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="action"/> is null.</exception>
        public static void WithWriterLock(ProtectedAction action)
        {
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }

            @lock.EnterWriteLock();
            try
            {
                action();
            }
            finally
            {
                @lock.ExitWriteLock();
            }
        }