首页 新闻 会员 周边 捐助

WebBrowser 当前线程不在单线程单元中,无法实例化ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-14 12:36

asp.net ,要在Global.asax里的protected void Application_Start(object sender, EventArgs e){}里面(应用程序启动时)调用类库里写好的方法去抓取网页的内容更新的数据库,类库代码如下:

WebBrowser webb = new WebBrowser();
            webb.Navigate(url);
            while (webb.ReadyState != WebBrowserReadyState.Complete)
            {
                System.Windows.Forms.Application.DoEvents();
            }
            if (webb != null)
            {
                try
                {
                    reader = new StreamReader(webb.DocumentStream, Encoding.GetEncoding(webb.Document.Encoding));
                    result = reader.ReadToEnd();
                }
                catch
                {
                    return;
                }
                finally
                {
                    reader.Close();
                    webb.Dispose();
                }
            }

可是到WebBrowser webb = new WebBrowser();这一步就出题目上的错误了,试过加上[STAThread]也没用,求解决啊!

< >
分享
最佳答案
0

       void Application_Start(object sender, EventArgs e)
        {
            // 應用程式啟動時執行的程式碼

            System.Threading.Thread th =new System.Threading.Thread( new System.Threading.ThreadStart(
               ()=> {
                WebBrowser webb = new WebBrowser();
                }));


        }

收获园豆:6
無限遐想 | 老鸟四级 |园豆:3740 | 2012-04-14 12:28
其他回答(2)
0

你是用了多线程吧?凡是针对UI的操作都必须在主线程里进行处理。

如果你需要在其它线程里执行这个操作,有个主窗体的方法可以实现,好像是Invoke(BeginInvoke/EndInvoke)还是别的什么的。查找下。这个方法是UI对象的成员。

收获园豆:3
无之无 | 园豆:5095 (大侠五级) | 2012-04-14 10:03
0

关注中

收获园豆:1
--宁静以致远-- | 园豆:364 (菜鸟二级) | 2012-04-14 10:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册