У меня есть приложение WPF на основе PRISM, которое использует шаблон MVVM.
Я заметил, что иногда мои взгляды, взгляды и все, что с ними связано, будут длиться долго после их предполагаемой продолжительности жизни.
Одна утечка включала подписку на CollectionChanged в коллекции, принадлежащей внедренной службе, другая - не вызывала метод Stop на DispatcherTimer, а еще одна требовала, чтобы коллекция была удалена из нее.
Я чувствую, что использование CompositePresentationEvent возможно предпочтительнее подписки на CollectionChanged, но в других сценариях я склоняюсь к реализации IDisposable и, чтобы представления вызывали метод Dispose на моделях просмотра.
Но тогда что-то должно сказать мнение, когда вызывать Dispose на модели представления, которая становится еще менее привлекательной, когда сложность просмотров увеличивается, и они начинают включать дочерние представления.
Как вы думаете, лучший подход к обработке моделей просмотра, чтобы обеспечить их утечку?
Заранее спасибо
Ян