2013-08-20 4 views
0

Итак, я получил свою программу, но она перестает отвечать на запросы, когда я запускаю ее, поэтому решил запустить ее в потоке. Теперь я сохранил все то же самое, но вместо того, чтобы использовать кнопку для запуска кода напрямую, я использую кнопку для запуска потока, содержащего код. То, что делает программа, это создание запроса на веб-страницу, получение файла cookie с веб-страницы, затем запуск списка номеров с использованием этих чисел для создания разных запросов POST с использованием файла cookie для входа.Почему я получаю эту ошибку при использовании потока?

Работа:

private void button3_Click(object sender, EventArgs e) 
    { 
     string cookie = webBrowser1.Document.Cookie; 
     List<string> removals = new List<string>(); 
     foreach (string s in listBox1.Items) 
     { 
      //do stuff 
     } 
    } 

Не работает:

thread th; 
    public void thread() 
     { 
      string cookie = webBrowser1.Document.Cookie; 
      List<string> removals = new List<string>(); 
      foreach (string s in listBox1.Items) 
      { 
      //do stuff 
      } 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      th = new Thread(thread); 
      th.Start(); 
     } 

Ошибка: http://prntscr.com/1mabtb

Спасибо.

ответ

0

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

Winforms - Invoking a method in another thread

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