Пример #1
0
        public void Initialize(Setting settings)
        {
            isTrackingEnabled = settings.TrackingEnabled;

            LoadAppLimits();

            midnightNotifier.MidnightTick += OnMidnightTick;

            subscription = appChangedNotifier.AppChangedObservable
                           .Where(a => appLimitsMap.Count > 0 && isTrackingEnabled)
                           .Select(a => a.LogInfo.AppInfo.GetAppName())
                           .Do(n =>
            {
                activeAppName = n;
                StopNotifiers();
            })
                           .Where(n => appLimitsMap.ContainsKey(n))
                           .SelectMany(n => Observable.ToObservable(appLimitsMap[n]))
                           .SelectMany(l => Observable.FromAsync(async() =>
            {
                return(new
                {
                    Limit = l,
                    Duration = await appDurationCalc.GetDuration(l.Application.Name, l.LimitSpan)
                });
            }))
                           .Subscribe(r => CheckDuration(r.Limit, r.Duration));
        }