Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查看所有我的RadTreeView节点添加而不冻结我的UI_C#_.net_Telerik_Radtreeview - Fatal编程技术网

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组件,但我确信有类似延迟加载和虚拟列表的东西(当兄弟节点可见时将创建兄弟节点,当节点展开时将创建子节点)。我可以有代码示例吗?(我是一名新开发人员…)