مشکل از imageList نیست. RAM و PageFile محدود هستن. من به تعداد زیاد خواستم pictureBox ایجاد کنم بعد از پر شدن pageFile که داشتم با TaskManager نگاش میکردم خطا میداد.
شما نمونه های کوچولو از عکس بساز و مسیر فایل ها رو هم توی یک آرایه ذخیره کن که هرجا لازم شد نمونه اصلی رو Load کنی.
Image img = Image.FromFile(file.FullName);
int w, h;
if (img.Width > img.Height)
{
w = thumbSize;
h = img.Height * thumbSize / img.Width;
}
else
{
h = thumbSize;
w = img.Width * thumbSize / img.Height;
}
Image thumb = img.GetThumbnailImage(w, h, () => false, IntPtr.Zero);
img.Dispose();
this.imageList1.Images.Add( thumb);
این رو هم خارج از حلقه تعریف کن و بجای 32 مقدار دلخواه بده:
int thumbSize = 32;
این کدها برای این هستن که تناسب عکس (نسبت طول به عرض) به هم نخوره. کمی سرعت رو پایین میاره ولی ارزشش رو داره.
اصلا بیا اول لیست مسیر فایل ها رو بساز که بعد پر شدن لیست بدونی با چه تعداد عکس سر و کار داری.
تعداد فایل های عکس رو که بدونی میشه ProgressBar یا هر ایده ی دیگه ای برا راضی نگه داشتن کاربر در حین ایجاد thumbnailها پیاده سازی کنی.