diff --git a/Business/Menus.cs b/Business/Menus.cs index 0de53af..61c80b3 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -1219,7 +1219,17 @@ namespace SystemTrayMenu.Business private void WatcherProcessItem(object sender, EventArgs e) { - if (menus[0] == null || !menus[0].IsLoaded) + bool UseHistory = false; + if (menus[0] == null) + { + UseHistory = true; + } + else + { + menus[0].Dispatcher.Invoke(() => UseHistory = !menus[0].IsLoaded); + } + + if (UseHistory) { watcherHistory.Add(e); return; @@ -1305,7 +1315,7 @@ namespace SystemTrayMenu.Business { List rowsToRemove = new(); - foreach (ListViewItemData item in dgv.Items) + foreach (ListViewItemData item in dgv.ItemsSource) { RowData rowData = item.data; if (rowData.Path == e.FullPath || @@ -1318,7 +1328,7 @@ namespace SystemTrayMenu.Business foreach (ListViewItemData rowToRemove in rowsToRemove) { - dgv.Items.Remove(rowToRemove); + ((IEditableCollectionView)dgv.Items).Remove(rowToRemove); } } diff --git a/Business/MenusHelpers.cs b/Business/MenusHelpers.cs index bb18565..0a7ed38 100644 --- a/Business/MenusHelpers.cs +++ b/Business/MenusHelpers.cs @@ -25,7 +25,14 @@ namespace SystemTrayMenu.Business GetNetworkRootDirectories(path, ref menuData); } else - { + { + if (!Directory.Exists(path)) + { + // Happens most likely when a shortcut is pointing to an absent target path + Log.Info($"path:'{path}' does not exist"); + return; + } + GetDirectories(worker, path, ref menuData); GetFiles(worker, path, ref menuData); }