Я работаю над проектом WPF с MVVM Light. Это приложение запускается в системном трее и генерирует Windows с ассоциированной ViewModel.
Когда пользователь закрывает Windows, у меня есть ViewModelLocator, чтобы освободить его экземпляр ViewModel, связанный.
Есть несколько экземпляров ViewModel одновременно, я не могу удалить весь экземпляр, только тот, который связан с закрытым окном
public class ViewModelLocator
{
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<CollectorViewModel>();
public static T GetNewInstance<T>(string uniqueKey)
{
var model = ServiceLocator.Current.GetInstance<T>(uniqueKey);
return model;
}
public static T GetInstance<T>()
{
return ServiceLocator.Current.GetInstance<T>();
}
public static void Cleanup(string uniqueKey)
{
SimpleIoc.Default.Unregister(uniqueKey);
}
}
public class CollectorViewModel
{
~CollectorViewModel()
{
//relase some resources
}
}
Я пытался освободить экземпляр по этому коду. Я уверен, что передал правильный uniqueKey для экземпляра
SimpleIoc.Default.Unregister(uniqueKey);
2-я попытка не дает эффекта.
SimpleIoc.Default.Unregister<CollectorViewModel>(myInstance);
Но когда я проверяю, он всегда там.
SimpleIoc.Default.GetAllInstances(typeof(CollectorViewModel));
Вопрос: как выпустить экземпляр?