CallstackAndLock.cs 586 B

12345678910111213141516171819202122232425262728
  1. namespace WinSCP
  2. {
  3. internal class CallstackAndLock : Callstack
  4. {
  5. public CallstackAndLock(Logger logger, Lock alock, object token = null) :
  6. base(logger, token)
  7. {
  8. _lock = alock;
  9. _lock.Enter();
  10. }
  11. public override void Dispose()
  12. {
  13. if (_lock != null)
  14. {
  15. _lock.Exit();
  16. }
  17. base.Dispose();
  18. }
  19. public void DisarmLock()
  20. {
  21. _lock = null;
  22. }
  23. private Lock _lock;
  24. }
  25. }