This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
mfgames-locking-cil/src/MfGames.Locking/UpgradableLock.cs
2018-07-17 13:13:08 -05:00

36 lines
1.1 KiB
C#

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