Отказ от подписки на события EventAggregator во ViewModels

Я начинаю использовать WPF с PRISM и MVVM. Одна из проблем, с которой я столкнулся, заключается в том, что я не могу найти подходящего места / передовой практики для отмены подписки на события EventAggregator, ранее подписанные в ViewModel. Следующее решение - вызов Unsubscribe в деструкторе - слишком поздно. Он просто работает со следующей сборкой мусора.

public class ViewModel : ViewModelBase
{
    public ViewModel()
    {
        var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
        eventAggregator.GetEvent<SeriesSelectionChangedEvent>().Subscribe(OnSeriesSelectionChanged);
    }

    ~ViewModel()
    {
        var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
        eventAggregator.GetEvent<SeriesSelectionChangedEvent>().Unsubscribe(OnSeriesSelectionChanged);
    }

    void OnSeriesSelectionChanged(SeriesSelectionChangedEventArgs e)
    {
    }
}
6
задан Dirk Brockhaus 28 April 2011 в 16:02
поделиться