public bool RedirectToScreenStart(bool isAutoRunning) { if (!isAutoRunning && !EnableRtaa) { return(false); } var serverTime = ServiceLocator.Current.GetInstance <IBackendModel>().GetUniversialTime(); var canSetWatchPoint = CanSetWatchPoint(serverTime); if (canSetWatchPoint && (isAutoRunning || !EnableRtaa)) { var screenStart = base.GetWatchPoint(); SetWatchPoint(serverTime.AddMinutes(-ScreenEnd.Subtract(screenStart).TotalMinutes / 2).TurnToMultiplesOf5()); } if (!EnableRtaa) { return(canSetWatchPoint); } // 自动时,如果在时间范围内,开启Timer自动刷新 if (isAutoRunning) { Action <DateTime> action = time => { MonitoringPoint = time; }; if (_timer == null) { var seconds = Convert.ToDouble(Application.Current.Resources["RtaaAutoRefreshInterval"]); _timer = new DispatcherTimer(DispatcherPriority.ContextIdle) { Interval = TimeSpan.FromSeconds(seconds < 10 ? 10d : seconds) }; _timer.Tick += (s, e) => action(ServiceLocator.Current.GetInstance <IBackendModel>().GetUniversialTime()); } if (canSetWatchPoint) { RtaaIsAutoRunning = true; action(serverTime); } } else//手动,如果开启Timer,那么停止自动刷新 { RtaaIsAutoRunning = false; } if (_timer != null) { _timer.IsEnabled = RtaaIsAutoRunning; } return(RtaaIsAutoRunning); }
public DateTime GetCenterOfScreenTime() { var screenStart = base.GetWatchPoint(); return(screenStart.AddMinutes(ScreenEnd.Subtract(screenStart).TotalMinutes / 2).TurnToMultiplesOf5()); }