Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  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);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement