protected virtual void OnThumbnailCreated(ThumbnailCreateEventArgs e)
 {
     if (ThumbnailCreated != null)
     {
         ThumbnailCreated(e);
     }
 }
        /// <summary>
        ///     Check and create thumbnails if necessary
        /// </summary>
        public void CheckThumbs(bool cleanup)
        {
            var missingThumbsSrc = new List <string>();
            var missingThumbsTrg = new List <string>();

            foreach (var ext in _imgExtensions)
            {
                var paths = Directory.GetFiles(ImageDirPath, ext, SearchOption.AllDirectories);
                foreach (var file in paths)
                {
                    if (!file.Contains(ExcludeThumbDirName) && !file.StartsWith(ThumbDirPath))
                    {
                        var relativePath = file.Substring((ImageDirPath + Path.DirectorySeparatorChar).Length);
                        var thumbPath    = ThumbDirPath + Path.DirectorySeparatorChar + relativePath;
                        if (!File.Exists(thumbPath))
                        {
                            missingThumbsSrc.Add(file);
                            missingThumbsTrg.Add(thumbPath);
                        }
                    }
                }
                // Cleanup
                if (cleanup)
                {
                    // Cleanup images of which no original file exists
                    var tumbPaths = Directory.GetFiles(ThumbDirPath, ext, SearchOption.AllDirectories);
                    foreach (var file in tumbPaths)
                    {
                        var realImage = file.Replace(ThumbDirPath, ImageDirPath);
                        if (!File.Exists(realImage))
                        {
                            File.Delete(file);
                        }
                    }
                    // Cleanup empty directories
                    FileUtils.RemoveEmptySubdirectories(ThumbDirPath);
                }
            }
            var cnt = missingThumbsSrc.Count;

            if (cnt > 0)
            {
                for (var i = 0; i < cnt; i++)
                {
                    ImageUtils.CreateThumb(missingThumbsSrc[i], missingThumbsTrg[i], DefaultThumbSize);
                    if (i % 10 == 0)
                    {
                        var e = new ThumbnailCreateEventArgs(i, cnt);
                        OnThumbnailCreated(e);
                    }
                }
            }
        }