假设一共有16个页面                            for (int j = 0; j < 16; j++)
                            {
                                Thread th = new Thread(new ThreadStart(Start));
                                th.SetApartmentState(System.Threading.ApartmentState.MTA);
                                threads[j] = th;
                            }
                            for (int c = 0; c < 16; c++)
                            {
                                threads[c].Start();
                            }
                            void Start()
                 {            Invoke(new MethodInvoker(delegate()
                 {
                     ge = new Regex("<SPAN class=order-num>" + @"[\s\S]*?" + "</SPAN>", RegexOptions.IgnoreCase);
                     ch = ge.Match(body);
                     if (ch.Value != "")
                     {
                         number = Regex.Replace(ch.Value, @"[^\d]*", string.Empty);
                         body = body.Remove(ch.Index, ch.Length);
                         webBrowser1.Navigate("http://trade.taobao.com/trade/detail/trade_item_detail.htm?bizOrderId=" + number + "");
                         
                     }
                 }));        }
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {        }为什么webBrowser1_DocumentCompleted 有加载了一个页面?多线程线程

解决方案 »

  1.   

    楼主代码排版有问题,看起来好累,   ch = ge.Match(body);这边的body在哪赋值的?还有webBrowser1.Navigate("http://trade.taobao.com/trade/detail/trade_item_detail.htm?bizOrderId=" + number + "");
    这里面的number 感觉是一个值哇
      

  2.   

    body 就是加载好的HTML,number 就是ID  这些不会有错。我意思是我开了16个线程访问16个网址 但是只有最后一个网址进到webBrowser1_DocumentCompleted里面。
      

  3.   

    多线程一般不大好调试,楼主将执行过程写进log吧
    看看这16个线程的执行情况怎么样