继续昨天的帖子。。
昨天的基本解决,可多线程同时抓取不同网站不同页面下的学生登录网页信息,并返回验证码
可是带来的新的问题,再抓回来后,我却不能继续操作这个webbrowser了,看了下帖子,说wb只能STA模式,这个通过委托可以解决么?现在增加的代码是
//用来登录的按钮
private void button2_Click(object sender, EventArgs e)
        {
            if (textBox21.Text != "")//输入的验证码
            {
                if (pictureBox11.Image != null)//验证码图像
                {
                    button1.Enabled = false;
                    r1 = new Thread(new ThreadStart(do_login_1));
                    r1.IsBackground = true;
                    r1.Name = "登陆线程";
                    r1.SetApartmentState(ApartmentState.STA);
                    r1.Start();
                }
                else
                {
                    MessageBox.Show("请等验证码出来后再操作,谢谢~", "请稍等");
                }
            }
        }void do_login_1()
        {
            WebBrowser my = webBrowser1_查询网站1;
            my.AllowNavigation = true;
            my.ScriptErrorsSuppressed = true;//就是这里开始出错,提示COM object that has been separated from its underlying RCW cannot be used.
            System.Windows.Forms.HtmlDocument mydocument = my.Document;//这里也是。。
            if (mydocument == null)
            {
                return;
            }
            #region 登录部分
            do_something()
            #endregion
        }
出错提示COM object that has been separated from its underlying RCW cannot be used.
查看了一下,貌似必须改成mta模式,但是改了后wb就不支持多线程了嘛,这个问题怎么解决呢?委托可以解决么?还是我一开始就该用委托模式操作wb?怎样才可以让这个wb一直是主窗口模式,线程只是不断的去访问,继续更新之类的呢?wb和登录按钮的窗口在一个form里,但是在不同的tabcontrol中,如果放到一个里面,貌似也没有帮助是不是?
vs2010,winform   分不够可以再给嘛,大大们帮帮忙哈。。