private void currentFilesWorker_DoWork(object sender, DoWorkEventArgs e) { List <FileInfo> toSearch = new List <FileInfo>(OutputPath.GetFiles()); foreach (string dir in otherDirs) { DirectoryInfo di = new DirectoryInfo(dir); foreach (FileInfo fi in di.GetFiles()) { toSearch.Add(fi); } } foreach (FileInfo fi in toSearch) { try { if (currentFilesWorker.CancellationPending == false) { if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false) { if (viewType != "LargeIcon") { currentFilesWorker.ReportProgress(0, null); break; } if (VALID_EXTENSIONS.Contains(fi.Extension.ToLower())) { Image img = Image.FromFile(fi.FullName); int thumbWidth = THUMB_SIZE; int thumbHeight = THUMB_SIZE; double aspectRatio = (double)img.Width / (double)img.Height; if (img.Height > img.Width) { thumbWidth = (int)((double)thumbHeight * aspectRatio); } else { thumbHeight = (int)((double)thumbWidth / aspectRatio); } Image thumb = new Bitmap(THUMB_SIZE, THUMB_SIZE); //img.GetThumbnailImage(thumbWidth, thumbHeight, ThumbnailCallback, System.IntPtr.Zero); Graphics g = Graphics.FromImage(thumb); g.DrawImage(img, (THUMB_SIZE - thumbWidth) / 2, THUMB_SIZE - thumbHeight, thumbWidth, thumbHeight); g.Dispose(); img.Dispose(); GC.Collect(); thumb.Tag = fi.Name; currentFilesWorker.ReportProgress(0, thumb); } else { FileInfo fi2 = new FileInfo("temp" + fi.Extension); if (fi2.Exists == false) { fi2.Create(); } Image img = System.Drawing.Icon.ExtractAssociatedIcon(fi2.FullName).ToBitmap(); Image thumb = img.GetThumbnailImage(THUMB_SIZE, THUMB_SIZE, ThumbnailCallback, System.IntPtr.Zero); img.Dispose(); try { fi2.Delete(); } catch { } GC.Collect(); thumb.Tag = fi.Name; currentFilesWorker.ReportProgress(0, thumb); } } } else { return; } } catch { } } }
private void InitListBox() { if (currentFilesWorker.IsBusy == false) { // listView1.Items.Clear(); // foreach (Image i in currentPhotoImageList.Images) // { // i.Dispose(); // } // listView1.LargeImageList = null; // currentPhotoImageList.Images.Clear(); // currentPhotoImageList = null; // GC.Collect(); foreach (FileInfo fi in OutputPath.GetFiles()) { try { if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false) { ListViewItem lvi = new ListViewItem(); lvi.Text = fi.Name; lvi.Tag = fi; lvi.SubItems.Add(fi.Length.ToString()); lvi.SubItems.Add(fi.LastWriteTime.ToString()); listView1.Items.Add(lvi); } } catch (Exception e) { Logger.Instance.WriteToLog(e.ToString()); } } foreach (string dir in otherDirs) { DirectoryInfo di = new DirectoryInfo(dir); foreach (FileInfo fi in di.GetFiles()) { try { if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false) { ListViewItem lvi = new ListViewItem(); lvi.Text = fi.Name; lvi.Tag = fi; lvi.SubItems.Add(fi.Length.ToString()); lvi.SubItems.Add(fi.LastWriteTime.ToString()); listView1.Items.Add(lvi); } } catch (Exception e) { Logger.Instance.WriteToLog(e.ToString()); } } } currentFilesWorker.RunWorkerAsync(); } }