1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00
Files
winscp/dotnet/internal/Lock.cs
Martin Prikryl 2e4b4738f0 5.2
2018-01-11 15:30:21 +01:00

33 lines
729 B
C#

using System;
using System.Threading;
namespace WinSCP
{
public class Lock
{
public void Enter()
{
Monitor.Enter(_lock);
if (_locked)
{
Monitor.Exit(_lock);
throw new InvalidOperationException("Recursive calls not allowed");
}
_locked = true;
}
public void Exit()
{
if (!_locked)
{
throw new InvalidOperationException("Not locked");
}
_locked = false;
Monitor.Exit(_lock);
}
private readonly object _lock = new object();
private bool _locked;
}
}