(연관된 글이 1개 있습니다.)
안녕하세요.
ICommand를 구현해서 특정 컨트롤에 Command처리를 하고 Execute()와 CanExecute() 메서드를 구현했을때
CanExecute Command 이벤트가 키보드와 마우스 Input이 감지 될때마다 매번 항상 발생 되는 것을 확인 할 수 있는데요
당연히 또 Execute Command가 실행 될 수 있는지 여부를 따질려면 매번 발생되는 것이 맞다고 생각하고 있습니다.
그런데 Command처리를 MVVM패턴으로
View에 Command바인딩 처리를 해놓고 ViewModel에 Execute()와 CanExecute()를 구현해 놓았을때
해당 View가 Close되고 더 이상 사용되지 않은 경우에도 매번 CanExecute Command 이벤트가 발생되는 것을 확인 할 수 있었습니다.
이 것이 여러개의 많은 Command가 사용되는 경우 메모리 누수 같은 영향을 끼치거나 CanExecute()안에 여러 개체를 참조하는 로직이 포함되어 있는 경우
심각한 문제가 될 수 있다고 생각하는데요..
이러한 상황 같은 경우는 어떻게 처리를 해야 하면 좋을지 질문 남겨 봅니다.
정리 하자면 MVVM패턴 사용시 해당 View가 제거 될때 ViewModel 정리 및 Command 이벤트 정리를 효과적으로 하려면 어떻게 하는 것이 좋은 것 인지 답변 부탁드립니다.
제가 테스트했던 파일 첨부 하겠습니다.
Window1이 닫힌 상태에서도 Window1ViewModel에 CanExecuteTestSendMailCommand가 매번 호출 되는 것을 확인했습니다.
[연관 글]
[최초 등록일: ]
[최종 수정일: 3/9/2016]