Fixed minor memory leak of Collection and Property changed event handlers when changing the ConnectionTreeModel associated to the ConnectionTreeWindow

This commit is contained in:
David Sparer
2016-10-06 11:04:00 -06:00
parent 67c01046be
commit 2ffcccdc6f

View File

@@ -222,21 +222,34 @@ namespace mRemoteNG.UI.Window
private void PopulateTreeView()
{
UnregisterModelUpdateHandlers();
olvConnections.SetObjects(ConnectionTreeModel.RootNodes);
SetModelUpdateHandlers();
RegisterModelUpdateHandlers();
_nodeSearcher = new NodeSearcher(ConnectionTreeModel);
ExpandPreviouslyOpenedFolders();
ExpandRootConnectionNode();
OpenConnectionsFromLastSession();
}
private void SetModelUpdateHandlers()
private void RegisterModelUpdateHandlers()
{
_puttySessionsManager.PuttySessionsCollectionChanged += (sender, args) => RefreshTreeObjects(GetRootPuttyNodes().ToList());
_puttySessionsManager.PuttySessionsCollectionChanged += OnPuttySessionsCollectionChanged;
ConnectionTreeModel.CollectionChanged += HandleCollectionChanged;
ConnectionTreeModel.PropertyChanged += HandleCollectionPropertyChanged;
}
private void UnregisterModelUpdateHandlers()
{
_puttySessionsManager.PuttySessionsCollectionChanged -= OnPuttySessionsCollectionChanged;
ConnectionTreeModel.CollectionChanged -= HandleCollectionChanged;
ConnectionTreeModel.PropertyChanged -= HandleCollectionPropertyChanged;
}
private void OnPuttySessionsCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
RefreshTreeObjects(GetRootPuttyNodes().ToList());
}
private void HandleCollectionPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{
//TODO for some reason property changed events are getting triggered twice for each changed property. should be just once. cant find source of duplication