Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void GetFiles()
- {
- // Load all files in directory
- Thread t = new Thread(new ThreadStart(GetImageFiles));
- t.Priority = ThreadPriority.Lowest;
- t.Start();
- }
- delegate void GetImageFilesCallback();
- private void GetImageFiles()
- {
- if (this.IsHandleCreated)
- {
- if (files.InvokeRequired)
- {
- GetImageFilesCallback callback = new GetImageFilesCallback(GetImageFiles);
- this.Invoke(callback);
- }
- else
- {
- string extension = "";
- string key = "";
- foreach (string file in _files)
- {
- extension = FileManager.GetExtension(file);
- key = (DirectoryCurrent + file).Replace(":", "").Replace("\", "_").Replace(".", "_");
- foreach (string knownimages in _knownImageTypes)
- {
- if (extension.ToLower() == knownimages)
- {
- foreach (ListViewItem item in files.Items)
- {
- if (item.Text == file)
- {
- if (files.SmallImageList != null)
- {
- if (files.SmallImageList.Images[key] == null)
- {
- files.SmallImageList.Images.Add(key, Image.FromFile(DirectoryCurrent + file).GetThumbnailImage(16, 16, null, IntPtr.Zero));
- files.LargeImageList.Images.Add(key, Image.FromFile(DirectoryCurrent + file).GetThumbnailImage(32, 32, null, IntPtr.Zero));
- }
- files.Items[item.Index].ImageKey = key;
- }
- }
- }
- }
- }
- }
- files.Refresh();
- }
- }
- }
- // this is your thread method
- // it touches no UI elements, just loads files and passes them to the main thread
- private void LoadFiles(List<string> filenames) {
- foreach (var file in filenames) {
- var key = filename.Replace(...);
- var largeBmp = Image.FromFile(...);
- var smallBmp = Image.FromFile(...);
- this.Invoke(new AddImagesDelegate(AddImages), key, largeBmp, smallBmp);
- }
- }
- // this executes on the main (UI) thread
- private void AddImages(string key, Bitmap large, Bitmap small) {
- // add bitmaps to listview
- files.SmallImageList.Images.Add(key, small);
- files.LargeImageList.Images.Add(key, large);
- }
- private delegate AddImagesDelegate(string key, Bitmap large, Bitmap small);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement