Witam. Mam pytanie. Napisałem mały programik dodający zdjęcia do bazy danych. Na początku wybieram zdjęcie przez openFileDialog (zdjęcia JPG). Później wrzucam je do imageList i dodaje do listView żeby mieć podgląd zdjęć jakie chce dodać. Zauważyłem, że w momencie dodania zdjęcia do programu, ilość zużywanej pamięci wzrasta, i po zapisaniu zdjęć do bazy program zużywa nadal tą samą ilość pamięci. Dalej, dodaje kolejne i ilość zużytej pamięci dalej rośnie. Zanim zdjęcia zostaną dodane do bazy danych przetrzymuje je w List<byte[]>. Teraz pojawia się pytanie dlaczego tak jest? Czy da się coś zrobić? Z góry dziękuje za odpowiedź.
Poniżej dodam kod odpowiedzialny za dodanie zdjęcia.
private byte[] ConvertImageToByte(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
private void buttonDodaj_Click(object sender, EventArgs e)
{
openFileDialog.Filter = "Pliki JPG (.jpg)|.jpg";
if(openFileDialog.ShowDialog() == DialogResult.OK)
{
Image image = Image.FromFile(openFileDialog.FileName);
imageList.Images.Add(image);
ListViewItem item = new ListViewItem();
item.ImageIndex = imageList.Images.Count - 1;
item.Text = "Moj obrazek";
listViewZdjecia.Items.Add(item);
zdjecia.Add(ConvertImageToByte(image));
}
}