123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #region --------------- Copyright Dresser Wayne Pignone -------------
- #endregion
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace Wayne.Lib.StateEngine
- {
-
-
-
-
-
-
- class TimerWrapper : IDisposable
- {
- private readonly TimerCallback timerCallback;
- #region Fields
- private bool disposed = false;
- StateEngine.Timer stateEngineTimer;
- System.Threading.Timer realTimer;
- #endregion
- #region Construction
-
-
-
-
- public TimerWrapper(TimerCallback timerCallback)
- {
- this.timerCallback = timerCallback;
- realTimer = new System.Threading.Timer(timerCallback, this, System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
- }
-
-
-
- ~TimerWrapper()
- {
- Dispose(false);
- }
- #endregion
- #region Properties
-
-
-
- public StateEngine.Timer StateEngineTimer
- {
- get { return stateEngineTimer; }
- set { stateEngineTimer = value; }
- }
- #endregion
- #region Methods
-
-
-
- internal void Disable()
- {
- if(!disposed)
- realTimer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
- }
-
-
-
- internal void Enable()
- {
- if (stateEngineTimer == null)
- throw new InvalidOperationException("Can not enable timer when no StateEngine timer is connected.");
- if (stateEngineTimer.IsPeriodic)
- realTimer.Change(stateEngineTimer.Interval, stateEngineTimer.Interval);
- else
- realTimer.Change(stateEngineTimer.Interval, System.Threading.Timeout.Infinite);
- }
-
-
-
- public void Fire()
- {
- if (timerCallback != null)
- timerCallback(this);
- }
- #endregion
- #region IDisposable Members
-
-
-
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposed)
- {
- if (disposing)
- {
- if (realTimer != null)
- {
- realTimer.Dispose();
- }
- realTimer = null;
- }
- if (realTimer != null)
- {
- realTimer.Dispose();
- }
- realTimer = null;
- }
- disposed = true;
- }
-
-
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- #endregion
- }
- }
|