Жизненный цикл, который вы хотите для каждого из ваших типов виртуальных машин, будет иметь здесь влияние, поэтому на самом деле нет правильного ответа для предоставленного вами контекста.
Базовый класс Screen
CMпредоставляет вам protected virtual void OnDeactivate(bool close);
, который является хорошим местом для начала.Для ваших тяжелых виртуальных машин вы должны переопределить этот метод, и если виртуальная машина закрывается, указанная параметром close, высвободить любые ресурсы (каналы WCF и т. Д.), Которые необходимо утилизировать, это будет включать в себя удаление ресурса (если IDisposable
имеет значение), а также отключение любых ссылок на него, чтобы он мог быть очищен GC.
Я не использую Castle, поэтому не могу помочь вам с настройкой жизненных циклов и т. д. Но если вы будете следоватьвыше, вы не собираетесь держаться за что-нибудь тяжелое.Я предполагаю, что с правильной конфигурацией жизненного цикла Castle очистит все старые экземпляры, которые вы не собираетесь использовать снова без явного вызова Release
.