최근 WPF 프로젝트에서 심각한 메모리 누수가 있음을 발견했습니다. 프로젝트를 단순화하면 로그인 양식과 기본 양식이 있습니다. 기본 폼에는 약 30 개의 사용자 컨트롤과 3 개의 버튼, 3 개의 버튼과 Infragistics DataGrid가있는 1 개의 사용자 컨트롤로 구성된 1 개의 사용자 컨트롤이 있습니다. 필자는 백그라운드 작업자를 사용하여 DataGrid에 대해서만 30 초마다 DB를 쿼리합니다.창 닫기 이벤트가 메모리 및 리소스를 해제하지 않습니다. WPF에서 메모리 누수를 해결하는 방법?
주 form.closed를 사용하여 주 양식을 로그 아웃 한 후 로그인 창을 다시 시작한 후에는 ANTS 메모리 프로필러가 측정 한 6-7MB가 증가 할 때마다 나타났습니다. 7. 등록되지 않은 이벤트 처리기가 있어도, 변수를 null로 설정하고 GC.Collect()라고하면 memeory 누출은 여전히 동일합니다. 내 질문은 : 1. 왜 wpf 창을 닫으면 메모리와 리소스가 해제되지 않습니까? 나는 ANTs 프로파일 러에 의해 닫힌 윈도우 후에 많은 문자열 (대부분 GUI에서왔다)이 여전히 메모리에 있음을 볼 수있다. 2. 자원 이벤트 설정자가 정의한 이벤트를 등록 취소해야합니까? XAML에 선언 된 이벤트를 등록 취소해야합니까? 3. WPF memory leak에서 사람들은 GC.Collect()를 사용하지 않아야한다고 말했지만 조금 개선되었다고합니다. 우리는 그것을 사용할지 안할지?
DependencyPropertyDescriptor.FromProperty ... AddValueChanged를 사용했지만 값이 변경되지 않아 코드가 메모리 누수가 발생하는 곳이 1 곳있었습니다. 그러나, 나는 여전히 다른 윈도우에서 메모리 누수를 발견했다. 나는 우리가 GC에게 전화하는 것에 동의한다.사용자 정의 컨트롤 안에 사용자 정의 컨트롤이 있으므로 수집하십시오. 감사. – user1424258