Ошибка ArgumentOutOfRangeException в ObservableCollection.Add()
Периодически при подключению к удаленному компьютеру по RDP в приложении вылетает ошибка ArgumentOutOfRangeException в при вызове метода ObservableCollection.Add(). Target: .NET Framework 4.7.2
public ObservableCollection<TreeViewItem> FolderTree;
private static void RootDirectotyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var tab = (SqlControl)d;
tab.FolderTree.Clear();
var newPath = (string)e.NewValue;
if (Directory.Exists(newPath))
{
var expandedDir = new DirectoryInfo(newPath);
foreach (DirectoryInfo subDir in expandedDir.GetDirectories())
tab.FolderTree.Add(CreateTreeItem(subDir)); // <--- Тут возникает ошибка
foreach (var sub in expandedDir.GetFiles("*.dbf"))
tab.FolderTree.Add(CreateTreeItem(sub));
}
}
private static TreeViewItem CreateTreeItem(object o)
{
TreeViewItem item = new TreeViewItem();
item.Header = o.ToString();
item.Tag = o;
item.Items.Add("Loading...");
return item;
}
Описание ошибки: System.ArgumentOutOfRangeException: 'Заданный аргумент находится вне диапазона допустимых значений. Имя параметра: index'
Стэк вызовов:
at System.Windows.Media.VisualCollection.Insert(Int32 index, Visual visual)
at System.Windows.Controls.Panel.AddChildren(GeneratorPosition pos, Int32 itemCount)
at System.Windows.Controls.Panel.OnItemsChangedInternal(Object sender, ItemsChangedEventArgs args)
at System.Windows.Controls.Panel.OnItemsChanged(Object sender, ItemsChangedEventArgs args)
at System.Windows.Controls.ItemContainerGenerator.OnItemAdded(Object item, Int32 index)
at System.Windows.Controls.ItemContainerGenerator.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at System.Windows.WeakEventManager.ListenerList`1.DeliverEvent(Object sender, EventArgs e, Type managerType)
at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)
at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
at System.Windows.Controls.ItemCollection.OnViewCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
at System.Windows.WeakEventManager.ListenerList`1.DeliverEvent(Object sender, EventArgs e, Type managerType)
at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)
at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
at System.Windows.Data.ListCollectionView.ProcessCollectionChangedWithAdjustedIndex(NotifyCollectionChangedEventArgs args, Int32 adjustedOldIndex, Int32 adjustedNewIndex)
at System.Windows.Data.ListCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
at System.Windows.Data.CollectionView.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
at System.Collections.ObjectModel.Collection`1.Add(T item)
at DbfEditor.SqlControl.RootDirectotyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) in D:\temp\SqlControl.xaml.cs:line 69