C#으로 코딩 된 내 이미지 뷰어에 다음 및 이전 탐색 옵션을 추가 할 때 약 20 분 후에 다음을 누르면 Visual Studio에서 프로세스의 메모리가 부족하다고 알립니다. .Image.Dispose 사용에도 불구하고 이미지 뷰어에서 메모리 부족 메모리 부족.
유형의 처리되지 않은 예외 'System.OutOfMemoryException이'는 System.Drawing.dll 추가 발생: 그것은 그들 모두에 대한 이미지 파일 크기가
내가 얻을 작은 경우에도 많은 어떤 폴더에이 작업을 수행 정보 : 메모리가 부족합니다.
이
은, 내가 그것을 사용했다이 다른 사람에 대해 검색 한 때문에ibread_img.Image.Dispose();
이 가지고 당신이 볼 수 있듯이 이제
private void next_Click(object sender, EventArgs e)
{
string[] foldernm = Directory.GetFiles(Path.GetDirectoryName(lfoto_file.FileName));
_pictureIndex++;
if (_pictureIndex >= foldernm.Length)
{
_pictureIndex = 0;
}
ibread_img.Image.Dispose();
ibread_img.Image = Image.FromFile(foldernm[_pictureIndex]);
}
을 사용하고있는 코드이지만, 그것은 작동하지 않습니다 여전히 같은 문제가 발생하면 코드가 실행되고있어 메모리가 부족한 이유를 혼란스럽게합니다. 사이클링중인 이미지가 크지 않습니다. 나는 이전에로드 된 이미지를 nulling하는 것, 수동으로 가비지 콜렉터를 호출하는 것을 포함하여 찾을 수있는 모든 것을 시도했지만 아무것도 작동하지 않는 것 같습니다. 나는 C#에서 최선이 아니므로 그 코드에 끔찍한 실수 나 결함이있을 수 있지만 모르겠다. 이것을 고치는 방법에 대한 아이디어는 무엇인가?
실제로 유효한 이미지 파일이 있는지 확인 하시겠습니까? – LarsTech
예외가 발생한 후에도 이미지가 그려지고 있습니까? 그렇다면 다음과 같이 중복 될 수 있습니다. http://stackoverflow.com/questions/6506089/system-drawing-out-of-memory-exception – JDupont
로드 할 가능성이 높은 검색 패턴/필터가 지정되어 있지 않으므로 이미지 파일. – Plutonix