在做采集时,有些网页因服务器限制用webclient或者webrequest不能获取html,这时我们可以用webbrowser的方法来绕过对方服务器的限制,但是在实例化webbrowser 的时候发现会报上面的错误,查了一些资料,最终写出下面的代码,能实现功能,不过可以再优化,留待以后有空的时候研究一下,下面是实现代码:

private static string htmlstr;
private static void GetHtmlWithBrowser(object url)
{
htmlstr = string.Empty;
WebBrowser wb = new WebBrowser();
wb.AllowNavigation = true;
wb.Url = new Uri(url.ToString());
DateTime dtime = DateTime.Now;
double timespan = 0;
while (timespan < 10 || wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
DateTime time2 = DateTime.Now;
timespan = (time2 - dtime).TotalSeconds;
}
if (wb.ReadyState == WebBrowserReadyState.Complete)
{
htmlstr = wb.DocumentText;
}
}
/// <summary>
/// 在单线程中启用浏览器
/// </summary>
public static void RunWithSingleThread(object url,ref string html)
{
ParameterizedThreadStart ps = new ParameterizedThreadStart(GetHtmlWithBrowser);
Thread t = new Thread(ps);
t.IsBackground = true;
t.ApartmentState = ApartmentState.STA;
t.Start(url);
html = htmlstr;
}

当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“...相关推荐

  1. 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法...

    解决办法是Form类中定义一个静态的ActiveX对象,在formload中将界面上的ActiveX对象赋值给新定义的对象,类中访问该静态对象即可. public static AxClientDri ...

  2. 写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)

    前言:今天在写一段VBA代码之后,遇到一个问题, Excel每次保存时就报一个警告(使用的是office 2007): 此文档中包含宏.Activex控件.XML扩展包信息 用起来很不爽! ----- ...

  3. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

  4. 32位visual studio中添加x64 ActiveX控件方法

    visual studio中创建ActiveX控件的方法可参考:https://blog.csdn.net/wangzhiyang925/article/details/38715605?tdsour ...

  5. Thread\Threading.Timer\Task中ShowDialog()方法报错:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式”

    在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 出错环境: 1.在Thread线程中,调用Show ...

  6. 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式

    在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 程序之前 ...

  7. 异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式

    最近做一个蛋疼的东西就是C#调用windows API 来操作一个摄像头,自动处理一些东西.要用到剪切板复制 粘贴功能,即 Clipboard.SetDataObject(filedic, true) ...

  8. Winform DataGridView单元格中动态添加多个控件

    简介: 在DataGridView的单元格中动态添加多个控件.例如在DataGridViewTextBox单元格中,添加CheckBox和Button控件.主题思路就是一个动态控件的大小,位置,显示, ...

  9. delphi中利用Indy的TIdFtp控件实现FTP协议

    2019独角兽企业重金招聘Python工程师标准>>> delphi中利用Indy的TIdFtp控件实现FTP协议版权声明:本文为博主原创文章,未经博主允许不得转载.现在很多应用都需 ...

最新文章

  1. win2003 server的域用户加入本地管理员组
  2. NeHe教程Qt实现——lesson01
  3. .NET MongoDB Driver 2.2使用示例
  4. 服务器所有文件,检索服务器端文件夹中的所有文件
  5. ORA-00972: identifier is too long问题解决
  6. mysql产品优化方案,MySQL优化方案
  7. “一加一减”的两种说话技巧
  8. 【预测模型】基于蝙蝠算法优化最小二乘支持向量机lssvm实现数据预测matlab代码
  9. 读书笔记_算法第四版(一)
  10. 退货地址导出(拼多多)
  11. 如何将class文件反编译成java文件
  12. iOS 咻一咻,雷达,搜索动画,radarView
  13. OCR(图片识别)之 百度 VS 谷歌
  14. 计算机720p进制,历史频道《人类大历史 Big History》第1季全17集 英语中字 720P高清纪录片...
  15. 最近在装修房子,展示下最近成果
  16. CAD中的标注文字如何沿弧线排列?
  17. 跳一跳,python脚本原理
  18. 微信支付 APP支付 Java 服务器端
  19. 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
  20. linux 抓图,关于Linux下的抓图软件和使用方法介绍

热门文章

  1. OpenGL 几何着色器Geometry Shader
  2. C++实现队列queue(附完整源码)
  3. C语言实现方差variance计算(附完整源码)
  4. C语言递归算法将十进制转换为二进制(附完整源码)
  5. QT的QSharedDataPointer类的使用
  6. QT的QQmlExtensionPlugin类的使用
  7. c++STL容器的Set和multiset
  8. 09_ClickHouse,ReplacingMergeTree,案例,根据排序键去重,使用版本参数的去重(学习笔记)
  9. Storm通信机制,Worker进程间通信,Worker进程间通信分析,Worker进程间技术(Netty、ZeroMQ),Worker 内部通信技术(Disruptor)(来自学习资料)
  10. caffe学习:通过研读classification.cpp了解如何使用caffe模型