1

我正在尝试在简单的 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)

谢谢。

4

2 回答 2

3

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

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

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

于 2009-01-12T19:28:12.927 回答
2
 Thread tr = new Thread(fillList);  
于 2009-01-12T19:20:24.347 回答