private void RecreateThumbnail() { lock (MediaProvider) { fileList = this.MediaProvider.GetChildEntries(folderBox.SelectedItem.ToString()); var buttonList = new List <Button>(); try { foreach (var file in fileList) { var stream = MediaProvider.OpenEntry(file); var button = new Button(); button.Text = file.Substring(file.LastIndexOf('\\') + 1); button.BackColor = SystemColors.ControlDark; button.Size = new Size(200, 200); button.TextAlign = ContentAlignment.BottomCenter; button.Name = file; button.Click += ImageButton_Click; stream.Close(); buttonList.Add(button); } } catch (NotSupportedException err) { MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); buttonList.Clear(); } finally { thmbnailPanel.Controls.Clear(); thmbnailPanel.Controls.AddRange(buttonList.ToArray()); imageList.Clear(); thumbnailBackgroundWorker.RunWorkerAsync(folderBox.SelectedItem.ToString()); } } }
private void thumbnailBackgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; var entry = e.Argument as string; try { for (int i = 0; i < fileList.Length; i++) { var file = fileList[i]; if (worker.CancellationPending == true) { e.Cancel = true; break; } lock (MediaProvider) { var stream = MediaProvider.OpenEntry(file); var image = CreateThumbnail(Image.FromStream(stream), 200, 200); stream.Close(); imageList.Add(image); } worker.ReportProgress((i * 100) / fileList.Length); } } catch (Exception err) { MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { } }