using System; using System.Threading; namespace ln.threading { public class DisposableLock : IDisposable { public object LockedObject { get; } public DisposableLock(object lockedObject) { LockedObject = lockedObject; Monitor.Enter(lockedObject); } public void Dispose() { Monitor.Exit(LockedObject); } } }