C# 查看所有我的RadTreeView节点添加而不冻结我的UI
我有C# 查看所有我的RadTreeView节点添加而不冻结我的UI,c#,.net,telerik,radtreeview,C#,.net,Telerik,Radtreeview,我有Winforms应用程序和RadTreeView,我只想动态添加节点,但我想看到这些节点添加而不冻结我的UI。 这就是我所尝试的: private void Add() { ThreadStart ts = delegate { this.Invoke((MethodInvoker)delegate { for (int i = 0; i < 10000; i++) {
Winforms
应用程序和RadTreeView
,我只想动态添加节点,但我想看到这些节点添加而不冻结我的UI。
这就是我所尝试的:
private void Add()
{
ThreadStart ts = delegate
{
this.Invoke((MethodInvoker)delegate
{
for (int i = 0; i < 10000; i++)
{
radTreeView1.Nodes.Add(i.ToString());
}
});
};
Thread thread = new Thread(ts);
thread.IsBackground = true;
thread.Start();
}
private void Add()
{
ThreadStart ts=委托
{
此.Invoke((MethodInvoker)委托
{
对于(int i=0;i<10000;i++)
{
radTreeView1.Nodes.Add(i.ToString());
}
});
};
螺纹=新螺纹(ts);
thread.IsBackground=true;
thread.Start();
}
当前我的Ui状态,但我看不到我的节点添加,但只有在for循环完成后,我才能看到我的所有节点,当然没有
线程
所有mu Ui冻结,是否有可能看到我的节点添加“正在进行”,如列表视图/GridView
?在那里,你的线程什么都不做,插入仍然在Ui线程中(顺便说一句,它是正确的)全部加在一起。您可以做的是在UI线程中分派每个节点的添加(在辅助线程中保持循环)。当然,这将大大降低您的UI线程的速度(但不会被冻结),只有在计算节点内容的逻辑比i.ToString()慢得多的情况下,才应该这样做。我不知道telerik组件,但我确信有类似延迟加载和虚拟列表的东西(当兄弟节点可见时将创建兄弟节点,当节点展开时将创建子节点)。我可以有代码示例吗?(我是一名新开发人员…)