コード例 #1
0
        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);
        }
コード例 #2
0
        public DateTime GetCenterOfScreenTime()
        {
            var screenStart = base.GetWatchPoint();

            return(screenStart.AddMinutes(ScreenEnd.Subtract(screenStart).TotalMinutes / 2).TurnToMultiplesOf5());
        }