Added extra null checks to event registration, caused an exception when clicking around during full resync

This commit is contained in:
Patrick Simpson 2017-05-31 12:07:20 +02:00
parent 86b2144e22
commit b5ee982bc7
1 changed files with 25 additions and 13 deletions

View File

@ -61,9 +61,9 @@ namespace Acacia.ZPush
protected override void DoRelease()
{
Cleanup();
_folder.Dispose();
_items.Dispose();
_subFolders.Dispose();
_folder?.Dispose();
_items?.Dispose();
_subFolders?.Dispose();
}
public override string ToString()
@ -113,24 +113,36 @@ namespace Acacia.ZPush
if (register)
{
// Item events
_items.ItemAdd += Items_ItemAdd;
_items.ItemChange += Items_ItemChange;
if (_items != null)
{
_items.ItemAdd += Items_ItemAdd;
_items.ItemChange += Items_ItemChange;
}
// Folder events
_subFolders.FolderAdd += SubFolders_FolderAdd;
_subFolders.FolderRemove += SubFolders_FolderRemove;
_subFolders.FolderChange += SubFolders_FolderChange;
if (_subFolders != null)
{
_subFolders.FolderAdd += SubFolders_FolderAdd;
_subFolders.FolderRemove += SubFolders_FolderRemove;
_subFolders.FolderChange += SubFolders_FolderChange;
}
}
else
{
// Item events
_items.ItemAdd -= Items_ItemAdd;
_items.ItemChange -= Items_ItemChange;
if (_items != null)
{
_items.ItemAdd -= Items_ItemAdd;
_items.ItemChange -= Items_ItemChange;
}
// Folder events
_subFolders.FolderAdd -= SubFolders_FolderAdd;
_subFolders.FolderRemove -= SubFolders_FolderRemove;
_subFolders.FolderChange -= SubFolders_FolderChange;
if (_subFolders != null)
{
_subFolders.FolderAdd -= SubFolders_FolderAdd;
_subFolders.FolderRemove -= SubFolders_FolderRemove;
_subFolders.FolderChange -= SubFolders_FolderChange;
}
}
}