Hi I use MEF and caliburn.micro in WPF app. I would like know how can I destroy instaces created with MEF.
For example simple shell:
public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShellViewModel
protected override void OnInitialize()
public void ShowLogOn()
var vm = IoC.Get<ILogOnViewModel>();
public void ShowMessenger(Account account)
var vm = IoC.Get<IMessengerViewModel>();
vm.Account = account;
public class LogOnViewModel : Screen,ILogOnViewModel
User user=new User();
public class MessengerViewModel : Screen, IViewModelIdentity,
IMessengerViewModel, IHandle<Rp>, IHandle<string>
WPF app start with first screen associated with ILogOnViewModel interface. Then I deactivate this screen and activate second screen associated with IMessengerViewModel interface.
I check memory usage with ANTS Mememory profiler but instace of ILogOnViewModel is still alive also instace of class User is alive.
I am newbie in IoC, DI... all class which are exported with MEF must live during the whole WPF application lifetime cycle?
Other example, I create new wpf window with window manager.
public class ChatViewModel : Screen, IViewModelIdentity,
IChatViewModel, IHandle<Rp>, IHandle<DetailData>
ChatViewModel is WPF Window.
Create instance of IChatViewModel:
private IWindowManager _windowManager;
var chatScreen = IoC.Get<IChatViewModel>();
Then I close (click on X (close) button on window) WPF Window, ChatViewModel is deactivated but instace of this class is still alive.
It exist way how kill/destroy this instaces?