由于代码量较多,就不便贴上来显示了.是这样的,在做一个系统,进入主窗体后要实时抓取自定义网络地址上分析下来的数据进数据库然后显示,由于该网络地址上的数据是30秒后刷新一次数据.那么我就得设置Timer每30秒后执行响应事件抓取一次数据进库.库里只留当前30秒内最新的数据.   我的思路是加载主窗体的时候第一次抓取,Timer等待30秒后执行事件删除之前抓取的数据然后又重新循环的去抓来进库显示.问题: 一二步没问题能够正常通过.当30秒后Timer去执行再次抓取数据的时候webBrowser出错.因为这个控件是单线程的,在网上查了下资料,有说用数组的,有说用委托的.但没有个明确的解决方案与例子. 希望有解决办法的朋友给予帮助,最好能有个例子与注释,不胜感激!!!

解决方案 »

  1.   

    public partial class Form1 : Form
        {         private void button1_Click(object sender, EventArgs e)
             {
                System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(test));
                s.ApartmentState = System.Threading.ApartmentState.STA;
                s.Start();
            }        public void test()
             {
                 this.Invoke(new EventHandler(this.invokeTest));
            }
            public void invokeTest(object sender,EventArgs e)
            {
                System.Windows.Forms.WebBrowser wb = new WebBrowser();
                this.Controls.Add(wb);
            }
            public Form1()
            {
                InitializeComponent();
            }
        }
    原因参考
    http://blog.csdn.net/jinjazz/archive/2007/11/29/1907240.aspx
      

  2.   

    问题已经解决了,谢谢你jinjazz 
      

  3.   

    怎么感觉这种方法里,
    WebBrowser 控件还是在主线程里建立的啊!