| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Threading;using System.ComponentModel;using System.Threading.Tasks;using System.Reflection;using Aitex.Core.Util;using System.Windows;using Aitex.Core.RT.Log;namespace Aitex.Core.UI.MVVM{    public abstract class TimerViewModelBase : ViewModelBase, ITimerViewModelBase	{        PeriodicJob _timer;        static List<TimerViewModelBase> _lstAll = new List<TimerViewModelBase>();        public static void StopAll()        {            foreach (TimerViewModelBase vm in _lstAll)                  vm.Stop();        }        public TimerViewModelBase(string name)        {            _timer = new PeriodicJob(1000, this.OnTimer, "UIUpdaterThread - " + name, false, true);            _lstAll.Add(this);        }        //        protected virtual bool OnTimer()         {            try            {                Poll();                           }            catch (Exception ex)            {                LOG.Error(ex.Message);            }            return true;        }                public void Start()        {            _timer.Start();        }        public void Stop()        {            _timer.Stop();        }        public void Dispose()        {            Stop();        }                protected abstract void Poll();        public virtual void UpdateData() { }        public virtual void EnableTimer(bool enable)        {            if (enable) _timer.Start();            else _timer.Pause();        }    }	public interface ITimerViewModelBase	{		void EnableTimer(bool enable);	}}
 |