Я работаю с WPF, и я разрабатываю сложный пользовательский контроль, состоящий из дерева с богатой функциональностью и т. Д. Для этого я использовал шаблон проектирования View-Model, поскольку некоторые операции не могли быть достигнуты напрямую в WPF. Поэтому я беру IHierarchyItem (который является узлом и передать его в этот конструктор, чтобы создать структуру дерева)Обход дерева без рекурсивного/стекового использования (C#)?
private IHierarchyItemViewModel(IHierarchyItem hierarchyItem, IHierarchyItemViewModel parent)
{
this.hierarchyItem = hierarchyItem;
this.parent = parent;
List<IHierarchyItemViewModel> l = new List<IHierarchyItemViewModel>();
foreach (IHierarchyItem item in hierarchyItem.Children)
{
l.Add(new IHierarchyItemViewModel(item, this));
}
children = new ReadOnlyCollection<IHierarchyItemViewModel>(l);
}
Проблема заключается в том, что этот конструктор занимает около 3 секунд !! для 200 предметов на моем двухъядерном процессоре. Я делаю anythig неправильный или рекурсивный вызов конструктора, это медленно? Большое спасибо!
Хорошо, все вышеописанное. Проблема была в иерархии. Дети продолжались слишком долго. –