Я работаю над проектом оргструктуры (SL 3) и вижу, что поток пользовательского интерфейса зависает, когда диаграмма строит около 2000 узлов, а при ее рендеринге требуется около минуты, а затем FPS сбрасывается.
Вот поток кода.
Page.xaml.cs вызывает службу wcf, которая возвращает список пользователей AD. Затем мы используем Linq для создания коллекции узлов для привязки к Orgchart.cs
OrgChart.cs - это холст, отображающий коллекцию узлов и соединительных линий.
Node.cs - это холст, в котором пользовательские данные могут содержать дочерние узлы.
NodeContent.xaml - это пользовательский элемент управления, у которого есть границы, поэтому я могу установить фон, текстовые блоки для отображения данных пользователя, события, которые обрабатывают выбранные и расширенные узлы, и раскадровки, которые изменяют размеры узлов, когда они выбраны или расширены. Я заметил в течение часов отладки здесь в InitializeComponent (); секция, где он загружает xaml, кажется, что это место, где происходит удар по преформансу.
System.Windows.Application.LoadComponent (это, новый System.Uri ("/ Silverlight.Custom; component / NodeContent.xaml", System.UriKind.Relative));
Так что, думаю, у меня есть два вопроса.
- Может ли многопоточность помочь каким-либо образом при зависании потока пользовательского интерфейса при рисовании узлов?
- Как я могу избежать попадания при вызове этого пользовательского элемента управления?
Буду очень признателен за любые советы или указания, которые кто-либо может дать.
Спасибо,
KC