2009-01-12 4 views
1

Я пытаюсь использовать Thread в простой winform. У меня есть ListBox, который я хочу заполнить числами в методе загрузки формы. Я не хочу ждать, пока он будет заполнен. Я использую что-то вроде этого:Список темBox C# SharpDevelop

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)

Спасибо.

ответ

3

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

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

Приложение вызывает обновление каждый раз, и это то, что замедляет вашу нагрузку. С помощью AddRange обновление произойдет только один раз.

Смежные вопросы