TryLocker.cs 467 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Threading;
  3. namespace Base
  4. {
  5. public class TryLock : IDisposable
  6. {
  7. private object locked;
  8. public bool HasLock { get; private set; }
  9. public TryLock(object obj)
  10. {
  11. if (!Monitor.TryEnter(obj))
  12. {
  13. return;
  14. }
  15. this.HasLock = true;
  16. this.locked = obj;
  17. }
  18. public void Dispose()
  19. {
  20. if (!this.HasLock)
  21. {
  22. return;
  23. }
  24. Monitor.Exit(this.locked);
  25. this.locked = null;
  26. this.HasLock = false;
  27. }
  28. }
  29. }