Список темBox C # SharpDevelop - PullRequest
       23

Список темBox C # SharpDevelop

1 голос
/ 12 января 2009

Я пытаюсь использовать Thread в простой форме win. У меня есть 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)

Спасибо.

Ответы [ 2 ]

3 голосов
/ 12 января 2009

Invoke просто запустит вышеуказанное в потоке пользовательского интерфейса, который уже происходит, если вы вызываете его из загрузки формы, поэтому ваш пользовательский интерфейс все еще будет задерживаться, пока вы заполняете список.

В приведенном выше примере вам, вероятно, не нужен новый поток, просто создайте массив, заполните его, а затем выполните AddRange вместо Add.

Добавление вызывает обновление каждый раз, и это замедляет загрузку. С AddRange обновление будет происходить только один раз.

2 голосов
/ 12 января 2009
 Thread tr = new Thread(fillList);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...