Время работы по таймеру - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста как посчитать время работы по таймеру, например: Чтение регистра происходит раз в секунду, если в регистре записан "0" значит двигатель выключен, как только появляется "1" мы включаем таймер и когда снова появился "0" мы полученную цифру работы пишем в базу и всё по новой. регистр читать умею, в базу писать умею...

Решение задачи: «Время работы по таймеру»

textual
Листинг программы
private bool isStarted = false;//флаг того, что таймер запущен. возможно напрочь не нужен, но я не сильно лез в свойства StopWatch-а
private System.Diagnostics.Stopwatch swTimer = new System.Diagnostics.Stopwatch();//сам таймер. хотя таймером его назвать сложно.
 
        private int registerValue = 0; //поле, хранящее значение
        public int RegisterValue      //свойство, для доступа к полю
        {
            get { return registerValue; } //возвращает без всяких закидонов
 
 
            set {                                //вот он страшный set, установка..
                if (registerValue == value)//если значение прочиталось такое же как и было..
                    return;                      //..то нечего его обрабатывать, выход
 
                registerValue = value;//приминение прочитанного значения
                if (value == 0) //если значение стало нулём
                     Stop();//..останавливаем работу таймера
                else Start();//если стало НЕ нулём - запускаем таймер
            }
        }
 
        public void Stop()//метод остановки таймера
        {
            if (!isStarted) return;//если не запущен - то нечего останавливать, выход
 
            swTimer.Stop();//остановка таймера
            Console.WriteLine(swTimer.Elapsed.ToString());//вывод отработанного времени
            //для ООП нужно будет создать событие и вызывать его
        }
 
        public void Start()//запуск таймера
        {
            isStarted = true;//установка флага запущенности
            swTimer.Start();//непосредственный запуск таймера
        }
 
        private void Register_Readed(int value) //этот метод - прочтение значения регистра
        {
            RegisterValue = value;//обращение ко свойству, которое будет обращаться к полю
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5