Я хочу добавить 1000 изображений (каждый размер (от 40 до 100) КБ) на панели во время выполнения в настольном приложении.Сначала пользователь просматривает все изображения и загружает их на панель.Когда он загружает изображения один за другим, использование памяти, показанное в диспетчере задач, быстро увеличивается, и после определенного количества изображений отображается «Исключение нехватки памяти».Где ошибка в моем коде?
Перед загрузкой диспетчера задач 700 изображений показывает 1,05 ГБ использование памяти.После загрузки диспетчер задач показывает 2,04 ГБ и 2 ГБ переполнения ОЗУ
int picnumber = 0;
int numberOfImages = 12;
numberOfImages = Convert.ToInt32(textBox1.Text.ToString());
for (int i = 0; i < numberOfImages; i++)
{
GroupBox gBox = new GroupBox();
picnumber++;
////////////////////////////////
// calculate the position of the groupbox where it is placed.
if ((picnumber % 3) == 1)
{
x = initX;
}
else
{
if ((picnumber % 3) == 0)
{
x = initX + 2 * (130 + 20);
}
else
{
x = initX + 130 + 20;
}
}
///////////////////////////////////
System.Drawing.Point CurrentPoint;
CurrentPoint = panel1.AutoScrollPosition;
y = initY + ((picnumber - 1) / 3) * (130 + 20) - (Math.Abs(panel1.AutoScrollPosition.Y));
gBox.Text = picnumber.ToString();
//place the groupbox in the appropriate position.
gBox.Location = new System.Drawing.Point(x, y);
gBox.Size = new System.Drawing.Size(130, 130);
Bitmap btmap = new Bitmap(@"E:\43.jpg");
// attach the image to the groupbox
gBox.BackgroundImage = btmap;
**gBox.BackgroundImageLayout = ImageLayout.Stretch;
// add the groupbox that contains image to the panel.
panel1.Controls.Add(gBox);**
Но я видел некоторые приложения, которые могут загружать огромное количество изображений и занимают незначительную память,например, «Batch Image Resizer» (http://www.jklnsoft.com/)
Как приложение обрабатывает память? Какой механизм они используют?
Перед загрузкой диспетчера задач 700 изображенийпоказывает использование памяти 1,05 ГБ. После загрузки диспетчер задач показывает 1,06 ГБ
Среда разработки: C # .net Framework 4, Windows XP, Visual Studio 2010, ОЗУ: 2 ГБ