SHARE
TWEET

Untitled

a guest Feb 19th, 2019 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. private void GetFiles()
  2. {
  3.    // Load all files in directory
  4.  
  5.    Thread t = new Thread(new ThreadStart(GetImageFiles));
  6.    t.Priority = ThreadPriority.Lowest;
  7.    t.Start();
  8.  
  9. }
  10.  
  11. delegate void GetImageFilesCallback();
  12.  
  13.     private void GetImageFiles()
  14.     {
  15.         if (this.IsHandleCreated)
  16.         {
  17.             if (files.InvokeRequired)
  18.             {
  19.                 GetImageFilesCallback callback = new GetImageFilesCallback(GetImageFiles);
  20.                 this.Invoke(callback);
  21.             }
  22.             else
  23.             {
  24.                 string extension = "";
  25.                 string key = "";
  26.  
  27.                 foreach (string file in _files)
  28.                 {
  29.                     extension = FileManager.GetExtension(file);
  30.                     key = (DirectoryCurrent + file).Replace(":", "").Replace("\", "_").Replace(".", "_");
  31.  
  32.                     foreach (string knownimages in _knownImageTypes)
  33.                     {
  34.                         if (extension.ToLower() == knownimages)
  35.                         {
  36.                             foreach (ListViewItem item in files.Items)
  37.                             {
  38.                                 if (item.Text == file)
  39.                                 {
  40.                                     if (files.SmallImageList != null)
  41.                                     {
  42.                                         if (files.SmallImageList.Images[key] == null)
  43.                                         {
  44.                                             files.SmallImageList.Images.Add(key, Image.FromFile(DirectoryCurrent + file).GetThumbnailImage(16, 16, null, IntPtr.Zero));
  45.                                             files.LargeImageList.Images.Add(key, Image.FromFile(DirectoryCurrent + file).GetThumbnailImage(32, 32, null, IntPtr.Zero));
  46.                                         }
  47.  
  48.                                         files.Items[item.Index].ImageKey = key;
  49.                                     }
  50.                                 }
  51.                             }
  52.                         }
  53.                     }
  54.                 }
  55.  
  56.                 files.Refresh();
  57.             }
  58.         }
  59.     }
  60.    
  61. // this is your thread method
  62. // it touches no UI elements, just loads files and passes them to the main thread
  63. private void LoadFiles(List<string> filenames) {
  64.    foreach (var file in filenames) {
  65.       var key = filename.Replace(...);
  66.       var largeBmp = Image.FromFile(...);
  67.       var smallBmp = Image.FromFile(...);
  68.       this.Invoke(new AddImagesDelegate(AddImages), key, largeBmp, smallBmp);
  69.    }
  70. }
  71.  
  72. // this executes on the main (UI) thread    
  73. private void AddImages(string key, Bitmap large, Bitmap small) {
  74.    // add bitmaps to listview
  75.    files.SmallImageList.Images.Add(key, small);
  76.    files.LargeImageList.Images.Add(key, large);
  77. }
  78.  
  79. private delegate AddImagesDelegate(string key, Bitmap large, Bitmap small);
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top