/// <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(); } }
public void Do(ProtectedAction action) { try { if (entered) { ThrowRecursionDetected(); } entered = true; action(); } finally { entered = false; } }
/// <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(); } }