질문과 답변

C# event 에 등록한 메소드를 제거 안하면 메모리 누수가 발생하나요? 날짜:2023-1-6 5:00:12 조회수:164
작성자 : 꿀꿀이호떡
포인트 : 23
가입일 : 2021-09-23 14:14:22
방문횟수 : 14
글 3개, 댓글 4개
소개 :
작성글 보기
쪽지 보내기
안녕하세요.
C# 질문 드립니다~

아래 처럼 버튼 클릭 시 특정 클래스 객체의 event에 메소드를 등록하고 제거를(-=) 안하는 동작이 반복되면
메모리 누수가 발생 하나요?

private void Btn_Click(object sender, RoutedEventArgs e)
{
    TestClass t = new TestClass();
    t.Event += Method;
}

만약 메모리 누수가 발생한다면
event에 익명 메소드로 등록 했을 경우는 어떻게 등록 해제를 해야 하나요?
 

목록보기 삭제 수정 신고 스크랩

작가K 1월10일 12:31:26  

버튼 클릭시보다 폼 로드시에 한번 등록하는게 더 깔끔하죠.
꼭 버튼 클릭시 등록하려면 이미 등록된 경우는 중복 등록을 하지 않으면 별 문제 없을 듯 합니다.
메모리 누수의 문제는 발생하지 않지만 이벤트 발생시 메서드가 여러번 호출되는 부작용이 있겠죠.
익명 메서드는 해제할 방법이 없으니 이때는 익명으로 쓰시면 안됩니다.

꿀꿀이호떡 1월17일 3:55:40  

감사합니다~~


로그인하셔야 댓글을 달 수 있습니다.