2013-08-12 1 views
4

다음과 같이 작업하고 있습니다 : VS 2010, .Net 4, WPF 및 .Net 메모리 프로필러 버전 4.6.40.0 Pro. 그들은 모두 Win7 64-bit에서 돌아가고 있습니다. 나는 .Net 메모리 프로파일 러 (Memory Profiler)를 사용하여 메모리 누수를 추적 해왔고, 문제가 해결 된 것처럼 보이지만 이해할 수없는 것을 발견했습니다. 우리는 3 개의 ContentPresenter 객체를 포함하는 컨트롤을 가지고 있습니다. 우리의 Cleanup 메소드에서 ContentPresenter 객체의 Content 속성을 null로 설정하면 컨트롤이 전혀 누출되지 않습니다. Content 속성을 null로 설정하지 않으면 큰 누수가 발생합니다 (각 테스트 약 3.5MB)."ContentPresenter.Content"memory leak

Google 검색에서 본 결과는이 문제를 직접 해결하지 못했습니다. ContentPresenter에 대한 설명서도 도움이되지 않았습니다. 여기 누 구가 콘텐츠를 누락시킨 이유를 이해하는 사람이 있습니까? 같은 것을 성취 할 수있는 더 좋은 방법이 있습니까?

공역 문제를 처리하기 위해 ContentPresenter 중 하나가 WindowsFormsHost와 BitmapSource간에 동적으로 전환된다는 점에 유의하십시오.

업데이트 : 여기에 정리의 관련 부분은 다음과 같습니다

첫째, 밖으로 널은 ContentPresenter에의

AddressGridPlaceholder.Content = null; 
AddressFormPlaceholder.Content = null; 
MapControlPlaceholder.Content = null; 

왜 MEE 납니까 그런 다음 WindowsFormsHost

if (_hoster != null) 
{ 
    _hoster.Child = null; // Remove the map control reference first 
    _hoster.Dispose(); // Then Dispose 
} 
+1

정리 방법을 참조해야합니다. –

답변

0

를 정리 당신은 컨트롤 바인딩을 사용하지 않습니다. 수동으로 이걸 가지고 놀아주는 것은 좋지 않습니다.