Beispiel #1
0
 public void Register(IImageSourceServiceListener listener)
 {
     if (listener == null)
     {
         throw new ArgumentNullException(nameof(listener));
     }
     if (listeners.Contains(listener))
     {
         throw new InvalidOperationException();
     }
     if (listeners.Count == 0)
     {
         Debug.Assert(imageIterator == null);
         imageIterator = new ImageIterator(backgroundImageSettings.IsRandom);
         backgroundImageSettings.SettingsChanged += BackgroundImageSettings_SettingsChanged;
         themeService.ThemeChangedLowPriority    += ThemeService_ThemeChangedLowPriority;
         OnSettingsChanged();
     }
     listeners.Add(listener);
     if (enabled)
     {
         listener.OnEnabled();
         listener.OnSettingsChanged();
     }
 }
Beispiel #2
0
        public void Unregister(IImageSourceServiceListener listener)
        {
            if (listener == null)
            {
                throw new ArgumentNullException(nameof(listener));
            }
            int index = listeners.IndexOf(listener);

            if (index < 0)
            {
                throw new ArgumentException();
            }
            listeners.RemoveAt(index);
            if (listeners.Count == 0)
            {
                DisposeTimer();
                backgroundImageSettings.SettingsChanged -= BackgroundImageSettings_SettingsChanged;
                themeService.ThemeChangedLowPriority    -= ThemeService_ThemeChangedLowPriority;
                Debug.Assert(imageIterator != null);
                imageIterator.Dispose();
                imageIterator = null;
            }
        }