UnityPlasticTimer.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Timers;
  3. using Codice.Client.Common.Threading;
  4. namespace Unity.PlasticSCM.Editor.UI
  5. {
  6. internal class UnityPlasticTimerBuilder : IPlasticTimerBuilder
  7. {
  8. IPlasticTimer IPlasticTimerBuilder.Get(bool bModalMode, ThreadWaiter.TimerTick timerTickDelegate)
  9. {
  10. return new UnityPlasticTimer(DEFAULT_TIMER_INTERVAL, timerTickDelegate);
  11. }
  12. IPlasticTimer IPlasticTimerBuilder.Get(bool bModalMode, int timerInterval, ThreadWaiter.TimerTick timerTickDelegate)
  13. {
  14. return new UnityPlasticTimer(timerInterval, timerTickDelegate);
  15. }
  16. const int DEFAULT_TIMER_INTERVAL = 100;
  17. }
  18. internal class UnityPlasticTimer : IPlasticTimer
  19. {
  20. internal UnityPlasticTimer(int timerInterval, ThreadWaiter.TimerTick timerTickDelegate)
  21. {
  22. mTimerInterval = timerInterval;
  23. mTimerTickDelegate = timerTickDelegate;
  24. }
  25. void IPlasticTimer.Start()
  26. {
  27. mTimer = new Timer();
  28. mTimer.Interval = mTimerInterval;
  29. mTimer.Elapsed += OnTimerTick;
  30. mTimer.Start();
  31. }
  32. void IPlasticTimer.Stop()
  33. {
  34. mTimer.Stop();
  35. mTimer.Elapsed -= OnTimerTick;
  36. mTimer.Dispose();
  37. }
  38. void OnTimerTick(object sender, EventArgs e)
  39. {
  40. mTimerTickDelegate();
  41. }
  42. Timer mTimer;
  43. int mTimerInterval;
  44. ThreadWaiter.TimerTick mTimerTickDelegate;
  45. }
  46. }