为什么在使用线程时会出现此错误

本文关键字:错误 线程 为什么 | 更新日期: 2023-09-27 18:28:13

所以,我让程序正常工作,但当我运行它时,它变得没有响应,所以我决定在线程中运行它。现在,我保持了一切不变,但我没有使用按钮直接运行代码,而是使用按钮运行包含代码的线程。该程序正在做的是创建一个对网页的请求,从网页中获取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

谢谢。

为什么在使用线程时会出现此错误

您可能正在使用WinForms,在这种情况下,您应该调用webBrowser1控件上的操作,以便在UI线程而不是新创建的线程上执行交互。请参阅此处的一系列答案:

Winforms-调用另一个线程中的方法