WPF에서 이미지의 사이즈가 큰 이미지 파일의 이미지를 로드 하는데 프로그램이 "응답 없음"상태로 죽어 버리는 현상 발생했다.
- 이미지 크기가 7000x7000 정도이고 파일 사이즈가 13MB정도하는 이미지를 바인딩하면 메모리의 할당량이 100MB에서 200MB 정도 증가하는 현상 발생 (개당)
- 위의 이미지를 동시에 3개 이상 바인딩하면 프로그램이 죽는 현상 발생
- 이벤트 이름은 "APPCRASH"로서 프로그램이 메모리 할당량이 많을 경우에는 900MB 이상으로 작업관리자에서 확인 됨
- 프로그램이 사용하는 라이브러리 때문에 x86으로만 빌드
이를 해결하기 위해서 구글링을 해 본 결과는 아래와 같다.
그리고 구글링한 내용
http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=1403&rssMode=1&wtype=0
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=151512&ref=151512
http://stackoverflow.com/questions/3553637/outofmemoryexception-loading-extremely-large-images
결과 먼저 말하면 "해결 불가능" 이다.
내용을 요약하면
"WPF 의 하나의 프로세스에서 소유할 수 있는 메모리 양은 실제적으로 1.4G가 한계. 그러나 referece monitor 에서 보면 실제로 1G가 한계. 그리고 그래픽에 대한 내용은 따로 관리되는 것으로 확인. 아마 그래서 1G가 한계인 듯, 동시에 큰 이미지를 열려고 해서 문제가 발생..."
".net framwork가 하는 내요이라서 컨트롤이 힘들듯. WPF의 PresentationCore가 처리하는 내용 코드 상에서 처리하는 방법에 한계가 있고, 딱히 방법 없는 걸로 보임"
이렇다.
이 현상의 메모리 할당량은 실행되는 때에 따라 다르고, 컴퓨터 하드웨어 사양에 따라서 다른거 같다.
나름 해결 방법은 이미지 파일의 로드를 메모리 할당량을 체크하여 바인딩 제한 하는 것인데, 이것도 확실한 방법이라고 할 수 없다.
결국은 WPF 에서 여러개의 이미지를 동시에 보여주는 것은 지양해야할 것으로 보임
'Computer > App.' 카테고리의 다른 글
[C#] System.ComponentModel.Win32Exception 에러 처리 (3) | 2016.02.05 |
---|---|
영상재생중 "apphangb1" 에러 이벤트 (1) | 2015.11.21 |
ClickOnce 설치 경로 (0) | 2015.09.19 |
[C#] 프로세스 종료 (0) | 2015.09.19 |
[C#] WebService Connection Check (0) | 2015.09.19 |