SelectActiveFrame을 사용하여 이미지 목록에 이미지 프레임을 추가하려고하면 메모리 부족 예외가 발생합니다. 174 페이지 미만으로 처리하면이 모든 오류가 발생하므로 100 %는 모두 작동합니다. 내 코드가 가장 간단한 형태입니다.OutOfMemoryException 이미지 목록에 많은 이미지 프레임 추가
var scannedImage = (Bitmap)Image.FromFile(@"C:\Users\rbl\Documents\Modelware\City Prop\TIFF Files\barcodememory.tiff");
var dim = new FrameDimension(scannedImage.FrameDimensionsList[0]);
var imageCount = scannedImage.GetFrameCount(dim);
var currentBatch = new List<Image>();
for (var i = 0; i < imageCount; i++)
{
scannedImage.SelectActiveFrame(dim, i);
currentBatch.Add(new Bitmap(scannedImage));
// Above experiences following error after +/- 174 pages
//System.OutOfMemoryException was unhandled
//Message=Out of memory.
//Source=System.Drawing
}
메모리 문제인지 확인하려면 희미 해져서 그 크기의 200 비트 맵을 생성하십시오. 그리고 명확성을 위해,'var'를 조금 덜 사용하십시오. –
실제 메모리가 65 %로 실행되는 메모리라고 생각하지 마십시오. vars에 대한 나의 재사용, ReSharper가 추천 한 것은 이것이 좋은 습관이 아니라는 것을 듣기에 재미 있습니다. 감사. 나는 이것이 실제로 좋지 않다는 것을 실제로 의심했다. –
TaskMan을 보지 말고, 어떤 코드를 실행하라. OOM은 LOH의 단편화로 인해 발생할 수 있습니다. –