/// <summary> /// タイマー処理 /// </summary> /// <param name="s"></param> /// <param name="e"></param> private void timer_Elapsed(object s, ElapsedEventArgs e) { try { _timer.Stop(); //1分以内の設定について処理する var span = new TimeSpan(0, 1, 0); var dateNow = DateTime.Now; var timeOfDay = dateNow.TimeOfDay; foreach (var time in TimerSetting) { //無効または未来の設定であれば飛ばす if (!time.Enabled || dateNow < time.ExecTime) { continue; } var start = time.ExecTime.TimeOfDay; var end = start.Add(span); if (start <= timeOfDay && timeOfDay <= end) { switch (time.Power) { case PowerEnum.Off: DisplaySleepHelper.SleepDisplay(); break; case PowerEnum.On: DisplaySleepHelper.WakeupDisplay(); break; default: throw new ArgumentOutOfRangeException(); } } //次の日の処理に回す time.ExecTime = time.ExecTime.AddDays(1); } } finally { _timer.Start(); } }
/// <summary> /// ディスプレイ電源オフ /// </summary> /// <param name="s"></param> /// <param name="e"></param> private void toolStripMenuItem_DisplaySleep_Click(object s, EventArgs e) { DisplaySleepHelper.SleepDisplay(); }