private void timerCallbackSet(object state) { timelineEventArgs args = new timelineEventArgs(); args.newValue = new pinDataBool(true, this, pinInfo["IntervalIsNow"]); onRequestNewTimelineEvent(args); timelineEventArgs cancelArgs = new timelineEventArgs(); cancelArgs.newValue = new pinDataBool(false, this, pinInfo["IntervalIsNow"]); onRequestNewTimelineEventInFuture(cancelArgs, 2); // _timer.setTo(false); }
private void checkTime(object state) { DateTime now = DateTime.Now; DateTime targettime = new DateTime(now.Year, now.Month, now.Day, (int)hours, (int)minutes, 00); DateTime lasttime = new DateTime(now.Year, now.Month, now.Day, (int)this._lastHours, (int)this._lastMinutes, 00); if (!this._running) { // This is the first time we have been called. Set the last time and return this._lastHours = now.Hour; this._lastMinutes = now.Minute; this._running = true; return; } bool doit = false; switch (options.when) { case TimeToRun.Daily: doit = (targettime > lasttime ) && // was time of last check before the target time? (targettime < now ); break; case TimeToRun.Weekly: doit = (targettime > lasttime) && // was time of last check before the target time? (targettime < now) && ((int)now.DayOfWeek) == options.Day; break; case TimeToRun.Monthly: int dayToRun = DateTime.DaysInMonth(now.Year, now.Month); // if greater than the days in the month use the last day if (options.Day < dayToRun) dayToRun = options.Day; doit = (targettime > lasttime) && // was time of last check before the target time? (targettime < now) && now.Day == dayToRun; break; case TimeToRun.Yearly: doit = (targettime > lasttime) && // was time of last check before the target time? (targettime < now) && now.Month == options.Month && now.Year == options.Year; break; } // Otherwise, see if the specified date has passed since the last call. if (targettime.CompareTo(now) == 0) // or it is exactly time doit = true; if (doit == true) { timelineEventArgs startArgs = new timelineEventArgs(); startArgs.newValue = new pinDataBool(true, this, pinInfo["timeIsNow"]); onRequestNewTimelineEvent(startArgs); timelineEventArgs cancelArgs = new timelineEventArgs(); cancelArgs.newValue = new pinDataBool(false, this, pinInfo["timeIsNow"]); onRequestNewTimelineEventInFuture(cancelArgs, 2); } this._lastHours = now.Hour; this._lastMinutes = now.Minute; }