public void RemoveRange(IList items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            using (BusyStack.GetToken())
                Items.RemoveRange(items);
        }
        public void AddRange(IEnumerable <T> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            using (BusyStack.GetToken())
                Items.AddRange(items);
        }
        public void Add(T item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            using (BusyStack.GetToken())
                Items.Add(item);
        }
        private async void MagickImageControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (IsBusy)
            {
                return;
            }

            using (BusyStack.GetToken())
            {
                try
                {
                    Image = await AnalyzeContext(e);
                }
                catch (UnauthorizedAccessException)
                {
                    Image = default(BitmapSource);

                    // this exception should be logged, instead of being ignored
                }
            }
        }
 public void Clear()
 {
     using (BusyStack.GetToken())
         Items.Clear();
 }
 public void Remove(T item)
 {
     using (BusyStack.GetToken())
         Items.Remove(item);
 }