Рискну предположить, что создание подкласса Timer очень мало полезно.Вы превратили около 7 строк кода в целую кучу раздувания.Учитывая, что ваш DoStuff
метод является закрытым, его нельзя использовать повторно.Поэтому рассмотрим следующие несколько строк:
Action doStuff=()=>{
//does stuff on each elapsed event occurance
};
_timer=new System.Timers.Timer(){
AutoReset = true,
Interval = Utils.TimeBetweenChecksInMiliseconds
};
_timer.Elapsed += (s,e)=>doStuff();
_timer.Start();
doStuff();
, где _timer
- это свойство содержащего класса.Намерение здесь ясно.Я не думаю, что он заслуживает отдельного класса.
Edit:
(s,e)=>doStuff()
- это лямбда-выражение, которое определяет делегата, который принимает два параметра s
и e
(отправитель и событие).Поскольку это добавлено к событию _timer.Elapsed
(типа ElapsedEventHandler
), компилятор может вывести типы s
и e
из типа события ElapsedEventHandler
.Единственное действие, которое выполняет наш делегат, это doStuff()
.
В произвольной форме это может быть расширено до:
_timer.Elapsed += delegate(object sender, ElapsedEventArgs e){doStuff();};
Лямбда позволяет нам писать выше значительно более кратко.