【问题标题】:Thread ListBox C# SharpDevelop线程列表框 C# SharpDevelop
【发布时间】:2009-01-12 19:18:19
【问题描述】:

我正在尝试在简单的 winform 中使用线程。我有一个 ListBox,我想在表单的加载方法中填充数字。我不想等到它被填满。我正在使用这样的东西:

void fillList()
        {

            Invoke(new MethodInvoker(
                delegate
                {
                    while(true)
                    {
                        i++;
                        listBox1.Items.Add(i);
                        if(i == 4000)
                        break;


                    }       
                }));

        }

然后在 Load 方法中我这样做:

Thread tr = new Thread(fillList());
tr.Start();

为什么它不起作用?

我收到此错误: 预期方法名称 (CS0149)

谢谢。

【问题讨论】:

    标签: winforms multithreading listbox


    【解决方案1】:

    如果您从表单加载中调用它,Invoke 只会在 UI 线程上运行上述内容,因此在填充列表时您的 UI 仍将被暂停。

    在上面的示例中,您可能不需要新线程,只需创建一个数组,填充它,然后执行 AddRange 而不是 Add。

    每次添加都会导致刷新,这就是减慢负载的原因。使用 AddRange,刷新只会发生一次。

    【讨论】:

      【解决方案2】:
       Thread tr = new Thread(fillList);  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        相关资源
        最近更新 更多