Есть процедурка, заполняющая дерево. Допустим
private void FillingTree()
{
for (int i=0; i<1000;i++)
{
TreeViewItem NewItem=new TreeViewItem();
NewItem.Header=i.ToString();
TreeView1.Dispatcher.Invoke( () =>
{
TreeView1.Items.Add(NewItem);
});
for (int j=0;j<1000;j++)
{
TreeViewItem NewSubItem=new TreeViewItem();
NewSubItem.Header=i.ToString() + "_" + j.ToString();
TreeView1.Dispatcher.Invoke( () =>
{
NewItem.Items.Add(NewSubItem);
});
}
}
}
и есть процедура, которая создает новый поток и запускает процедуру заполнения дерева в нем.
private void FillTreeAsync()
{
Thread th = new Thread(new ThreadStart(FillingTree));
th.Start();
}
Заполнение дерева занимает определенное время и на это время блокируется как само дерево так и форма. Ну, не то что бы прям блокируется, но замирает и дергается. Почему так происходит и как это исправить?