我让用户选择图像,这些图像存储在一个列表中。 当添加20个图像(或多或少)时,我得到一个outOfMemory错误。
我使用的图像各为13MB,因此添加20张图像时,为260 MB 被加载到内存中。这不是很多,为什么会崩溃?
private void btnBrowse_Click(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog())
{
dlg.Title = "Open Image";
dlg.Filter = "Image Files (*.bmp;*.jpg;*.jpeg,*.png)|*.BMP;*.JPG;*.JPEG;*.PNG";
if (dlg.ShowDialog() == DialogResult.OK)
{
++totalNrPages;
if (cbxInsertPage.Checked)
{
//add page after pageIndex
Image img = Bitmap.FromFile(dlg.FileName);
scanController.InsertPage(img, pageIndex + 1);
ChangePage(pageIndex + 1);
}
else
{
//add page to the end
scanController.AddPage(Bitmap.FromFile(dlg.FileName));
ChangePage(totalNrPages - 1);
}
}
}
}
insertPage方法:
private List<ScannedPage> scannedPages = new List<ScannedPage>();
public void InsertPage(Image img, int pageIdx)
{
scannedPages.Insert(pageIdx, new ScannedPage(img));
}