D3M3NT0R
یک شنبه 14 دی 1393, 03:17 صبح
سلام دوستان
من یه برنامه دارم که اول میاد یه imageList رو با عکس پر میکنه بعد عکس هارو تک تک وارد imageList میکنه
ولی یه مشکل هست
موقع پر کردن imageList خیلی از ram سیستم استفاده میشه چون پرونده هایی که خونده میشه خیلی سنگین هستن
حتی شده تا 3 گیگ از ram استفاده کنه
بعضی موقع ها هم out of memory میشه
کد برنامه به این شکل هست
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo file in dir.GetFiles())
{
try
{
this.imageList1.Images.Add(Image.FromFile(file.Ful lName));
}
catch{
Console.WriteLine("This is not an image file");
}
}
this.listView1.View = View.LargeIcon;
this.imageList1.ImageSize = new Size(32, 32);
this.listView1.LargeImageList = this.imageList1;
//or
//this.listView1.View = View.SmallIcon;
//this.listView1.SmallImageList = this.imageList1;
for (int j = 0; j < this.imageList1.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
من واسه اینکه مشکل ram رو حل کنم این قسمت کد رو تغییر دادم
Image img=Image.FromFile(file.FullName);
this.imageList1.Images.Add(img);
img.Dispose();
حالا که مشکل ram حل میشه دیگه عکس هارو داخل listView نشون نمیده
اسمشون میاد ولی خوده عکس نه
از کد System.GC.Collect() استفاده کردم ولی به دردم نمیخوره
بازم از ram کلی استفاده میکنه آخرش که کار تموم شد ram رو خالی میکنه
میخواستم بدونم کسی راه حلی نداره ؟
ممنون
من یه برنامه دارم که اول میاد یه imageList رو با عکس پر میکنه بعد عکس هارو تک تک وارد imageList میکنه
ولی یه مشکل هست
موقع پر کردن imageList خیلی از ram سیستم استفاده میشه چون پرونده هایی که خونده میشه خیلی سنگین هستن
حتی شده تا 3 گیگ از ram استفاده کنه
بعضی موقع ها هم out of memory میشه
کد برنامه به این شکل هست
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo file in dir.GetFiles())
{
try
{
this.imageList1.Images.Add(Image.FromFile(file.Ful lName));
}
catch{
Console.WriteLine("This is not an image file");
}
}
this.listView1.View = View.LargeIcon;
this.imageList1.ImageSize = new Size(32, 32);
this.listView1.LargeImageList = this.imageList1;
//or
//this.listView1.View = View.SmallIcon;
//this.listView1.SmallImageList = this.imageList1;
for (int j = 0; j < this.imageList1.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
من واسه اینکه مشکل ram رو حل کنم این قسمت کد رو تغییر دادم
Image img=Image.FromFile(file.FullName);
this.imageList1.Images.Add(img);
img.Dispose();
حالا که مشکل ram حل میشه دیگه عکس هارو داخل listView نشون نمیده
اسمشون میاد ولی خوده عکس نه
از کد System.GC.Collect() استفاده کردم ولی به دردم نمیخوره
بازم از ram کلی استفاده میکنه آخرش که کار تموم شد ram رو خالی میکنه
میخواستم بدونم کسی راه حلی نداره ؟
ممنون