using System;
using System.Threading;
namespace MfGames.Locking
{
/// <summary>
/// Defines a ReaderWriterLockSlim read-only lock.
/// </summary>
public class UpgradableLock : IDisposable
private readonly ReaderWriterLockSlim readerWriterLockSlim;
/// Initializes a new instance of the <see cref="UpgradableLock" /> class.
/// <param name="readerWriterLockSlim">The reader writer lock slim.</param>
public UpgradableLock(ReaderWriterLockSlim readerWriterLockSlim)
this.readerWriterLockSlim = readerWriterLockSlim;
readerWriterLockSlim.EnterUpgradeableReadLock();
}
/// Performs application-defined tasks associated with freeing, releasing, or
/// resetting unmanaged resources.
public void Dispose()
this.readerWriterLockSlim.ExitUpgradeableReadLock();