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); }
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"); } });