이 질문에는 이미 답변이 있습니다.
큰 WinForm 응용 프로그램을 개발하고 메모리 누수가 발생했습니다. 문제 중 하나는 양식을 닫아서 메모리를 확보하지 못했다는 것입니다 (.NET Memory Profiler를 사용함). 어떤 사람들은 메모리 누수를 방지하기 위해 이벤트 핸들러를 수동으로 폼에서 제거해야한다고 제안했습니다. 폼을 닫을 때 디자이너가 만든 Load, Form_Closing 이벤트 처리기를 제거해야한다는 의미입니까? .NET 4.5 사용하고 있습니다. 고맙습니다!
아니요. 이벤트 핸들러에 대한 우려는 메서드를 사용하여 객체가 핸들러를 실행하는 객체를 참조한다는 것입니다. 즉, 이벤트를 발생시키는 객체가 객체보다 훨씬 오래 동안 생기게되면 핸들러를 정리할 수 없습니다.
이벤트를 처리하는 객체가 이벤트를 발생시키는 객체에 대한 참조를 가지지 않기 때문에, 객체를 처리하는 객체보다 수명이 훨씬 짧은 이벤트를 발생시키는 객체에 전혀 문제가 없습니다.