private void UpdateThumbs(string gamePath) { BackgroundWorker bw = new BackgroundWorker(); GalleryModel.UnLoadData(); IsLoading(true); bw.DoWork += (s, e) => { string[] fileList = Directory.GetFiles(gamePath + SCREENSHOTS_DIR, "*.jpg"); if (!Directory.Exists(gamePath + THUMBS_DIR)) { try { Directory.CreateDirectory(gamePath + THUMBS_DIR); } catch { return; } } for (int i = 0; i < fileList.Length; i++) { BitmapImage bitmap; string thumbPath = gamePath + THUMBS_DIR + "\\" + Path.GetFileName(fileList[i]); if (!File.Exists(thumbPath)) { ImageEncoder.ResizeScreenShot(fileList[i], thumbPath); } if (File.Exists(thumbPath)) { bitmap = ReadBitmapFromFile(thumbPath); } else { bitmap = ReadBitmapFromFile(fileList[i]); } DateTime result; try { result = DateTime.ParseExact(Path.GetFileNameWithoutExtension(fileList[i]), "yyMMdd_HHmmss", CultureInfo.InvariantCulture); } catch (FormatException) { result = File.GetCreationTime(fileList[i]); } this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new DoAddThumb((bitmap_, path_, date_) => { GalleryModel.Add(new GalleryItemViewModel() { Thumb = bitmap_, FullPath = path_, Date = date_ }); }), bitmap, fileList[i], result.ToString()); } }; bw.RunWorkerCompleted += (s, e) => { IsGalleryInitialized = true; IsLoading(false); }; bw.RunWorkerAsync(); }