internal static void Remove(IEnumerable <FileInfo> files, Action onSuccess = null)
        {
            var q = string.Format("Удалить файлы ({0}) ?", files.Count());

            if (MessageBox.Show(q, "Внимание!", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
            {
                return;
            }

            var removed = new List <long>();

            foreach (var file in files)
            {
                try
                {
                    var length = file.Length;
                    file.Delete();
                    removed.Add(length);
                }
                catch (Exception exc)
                {
                    var msg    = "Ошибка: " + exc.Message + Environment.NewLine + "Продолжить удаление других файлов?";
                    var result = MessageBox.Show(msg, "Ошибка", MessageBoxButton.YesNo, MessageBoxImage.Error);
                    if (result == MessageBoxResult.No)
                    {
                        break;
                    }
                }
            }

            if (onSuccess != null)
            {
                onSuccess();
            }

            var info = "Удалено файлов: " + removed.Count;

            if (removed.Count > 0)
            {
                info += Environment.NewLine + "Суммарный размер удаленных файлов: " + FileSizeConverter.SizeToString(removed.Sum());
            }
            MessageBox.Show(info, string.Empty, MessageBoxButton.OK, MessageBoxImage.Information);
        }