/// <summary> /// .ctor. Try to acquire lock with given timeout. /// <exception cref="InvalidOperationException"> If wrong SlimLockMode specified</exception> /// <exception cref="ApplicationException"> If lock cannot be acquired during timeout</exception> /// <exception cref="ArgumentNullException"> alock is null</exception> /// <exception cref="LockRecursionException"> /// <see cref="ReaderWriterLockSlim.TryEnterReadLock(System.TimeSpan)"/> /// <see cref="ReaderWriterLockSlim.TryEnterUpgradeableReadLock(System.TimeSpan)"/> /// <see cref="ReaderWriterLockSlim.TryEnterWriteLock(System.TimeSpan)"/> /// </exception> /// </summary> /// <param name="alock">Lock object</param> /// <param name="mode">Mode to acquire lock</param> /// <param name="timeout">Timeout to acquire lock</param> public DisposableReaderWriterLockSlim(ReaderWriterLockSlim alock, TimeSpan timeout, SlimLockMode mode = SlimLockMode.Read) { ParametersValidator.IsNotNull(alock, () => alock); _lock = alock; _mode = mode; _timeout = timeout; AcquireLock(); Logger.TraceFormat("lock created timeout={0}, mode ={1}", timeout, mode); }
/// <summary> /// .ctor. Try to acquire lock with default timeout (1h). /// <exception cref="InvalidOperationException"> If wrong SlimLockMode specified</exception> /// <exception cref="ApplicationException"> If lock cannot be acquired during timeout</exception> /// <exception cref="ArgumentNullException"> alock is null</exception> /// <exception cref="LockRecursionException"> /// <see cref="ReaderWriterLockSlim.TryEnterReadLock(System.TimeSpan)"/> /// <see cref="ReaderWriterLockSlim.TryEnterUpgradeableReadLock(System.TimeSpan)"/> /// <see cref="ReaderWriterLockSlim.TryEnterWriteLock(System.TimeSpan)"/> /// </exception> /// </summary> /// <param name="alock">Lock object</param> /// <param name="mode">Mode to acquire lock</param> public DisposableReaderWriterLockSlim(ReaderWriterLockSlim alock, SlimLockMode mode = SlimLockMode.Read) : this(alock, DefaultTimeout, mode) { }