示例#1
0
        public WallpaperOrchestrator(IDependencyResolver dependencyResolver)
        {
            _refreshLock = new object();
            _timer       = new Timer(x =>
            {
                _logger.Debug("Cyclic rotate timer executed");
                RotatePictureForward();
            });
            _monitors    = new List <MonitorWallpaperInformation>();
            _nextMonitor = 0;

            _playlist     = new List <LocalWallpaper>();
            _playlistLast = new List <LocalWallpaper>();

            var threadManager = dependencyResolver.GetInstance <IThreadManager>();
            var logManager    = dependencyResolver.GetInstance <ILogManager>();
            var eventService  = dependencyResolver.GetInstance <IEventService>();

            _logger = logManager.GetLogger <WallpaperOrchestrator>();

            AuthenticationManager = new AuthenticationManager(logManager);
            MonitorsManager       = new MonitorsManager(logManager.GetLogger <MonitorsManager>(), logManager);
            ApiClient             = new WallpaperApiClient(logManager.GetLogger <WallpaperApiClient>(), AuthenticationManager);

            WallpaperManager = new LocalWallpaperManager(logManager.GetLogger <LocalWallpaperManager>(), threadManager, eventService, ApiClient);
            PlaylistManager  = new PlaylistManager(logManager.GetLogger <PlaylistManager>(), ApiClient);
        }
示例#2
0
        private Task RefreshPlaylist()
        => Task.Factory.StartNew(() =>
        {
            lock (_refreshLock)
            {
                if (_playlist.Count <= MonitorsManager.MonitorCount * 2)
                {
                    _logger.Info("Refreshing playlist started");
                    foreach (var playlistElement in PlaylistManager.GetNext())
                    {
                        var wallpaper = WallpaperManager.GetById(playlistElement.WallpaperId);
                        if (wallpaper.HasValue)
                        {
                            _playlist.Add(wallpaper.Value);
                        }
                    }
                }

                while (_playlistLast.Count > 10)
                {
                    _playlistLast.RemoveAt(0);
                }
            }
        }).ContinueWith(x =>
        {
            if (x.IsFaulted)
            {
                _logger.Error(x.Exception, "Refreshing playlist failed");
            }
        });