Delayer.cs 755 B

1234567891011121314151617181920212223242526272829
  1. using System.Diagnostics;
  2. using System.Threading;
  3. namespace VCommon.VApplication.Security
  4. {
  5. public class Delayer
  6. {
  7. private readonly int _milliseconds;
  8. private readonly Stopwatch _stopwatch;
  9. public Delayer(int milliseconds = 1000, bool immediatelyStart = false)
  10. {
  11. _milliseconds = milliseconds;
  12. _stopwatch = new Stopwatch();
  13. if (immediatelyStart) Start();
  14. }
  15. public void Start()
  16. {
  17. _stopwatch.Restart();
  18. }
  19. public void StopAndDelay()
  20. {
  21. _stopwatch.Stop();
  22. if (_stopwatch.ElapsedMilliseconds < _milliseconds) Thread.Sleep((int)(_milliseconds - _stopwatch.ElapsedMilliseconds));
  23. }
  24. }
  25. }