当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“...
在做采集时,有些网页因服务器限制用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“...相关推荐
- 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法...
解决办法是Form类中定义一个静态的ActiveX对象,在formload中将界面上的ActiveX对象赋值给新定义的对象,类中访问该静态对象即可. public static AxClientDri ...
- 写了一段VBA代码后, Excel每次保存时都弹出警告:”此文档中包含宏、Activex控件、XML扩展包信息“(office 2007)
前言:今天在写一段VBA代码之后,遇到一个问题, Excel每次保存时就报一个警告(使用的是office 2007): 此文档中包含宏.Activex控件.XML扩展包信息 用起来很不爽! ----- ...
- 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件
适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...
- 32位visual studio中添加x64 ActiveX控件方法
visual studio中创建ActiveX控件的方法可参考:https://blog.csdn.net/wangzhiyang925/article/details/38715605?tdsour ...
- Thread\Threading.Timer\Task中ShowDialog()方法报错:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式”
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 出错环境: 1.在Thread线程中,调用Show ...
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 程序之前 ...
- 异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
最近做一个蛋疼的东西就是C#调用windows API 来操作一个摄像头,自动处理一些东西.要用到剪切板复制 粘贴功能,即 Clipboard.SetDataObject(filedic, true) ...
- Winform DataGridView单元格中动态添加多个控件
简介: 在DataGridView的单元格中动态添加多个控件.例如在DataGridViewTextBox单元格中,添加CheckBox和Button控件.主题思路就是一个动态控件的大小,位置,显示, ...
- delphi中利用Indy的TIdFtp控件实现FTP协议
2019独角兽企业重金招聘Python工程师标准>>> delphi中利用Indy的TIdFtp控件实现FTP协议版权声明:本文为博主原创文章,未经博主允许不得转载.现在很多应用都需 ...
最新文章
- win2003 server的域用户加入本地管理员组
- NeHe教程Qt实现——lesson01
- .NET MongoDB Driver 2.2使用示例
- 服务器所有文件,检索服务器端文件夹中的所有文件
- ORA-00972: identifier is too long问题解决
- mysql产品优化方案,MySQL优化方案
- “一加一减”的两种说话技巧
- 【预测模型】基于蝙蝠算法优化最小二乘支持向量机lssvm实现数据预测matlab代码
- 读书笔记_算法第四版(一)
- 退货地址导出(拼多多)
- 如何将class文件反编译成java文件
- iOS 咻一咻,雷达,搜索动画,radarView
- OCR(图片识别)之 百度 VS 谷歌
- 计算机720p进制,历史频道《人类大历史 Big History》第1季全17集 英语中字 720P高清纪录片...
- 最近在装修房子,展示下最近成果
- CAD中的标注文字如何沿弧线排列?
- 跳一跳,python脚本原理
- 微信支付 APP支付 Java 服务器端
- 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
- linux 抓图,关于Linux下的抓图软件和使用方法介绍
热门文章
- OpenGL 几何着色器Geometry Shader
- C++实现队列queue(附完整源码)
- C语言实现方差variance计算(附完整源码)
- C语言递归算法将十进制转换为二进制(附完整源码)
- QT的QSharedDataPointer类的使用
- QT的QQmlExtensionPlugin类的使用
- c++STL容器的Set和multiset
- 09_ClickHouse,ReplacingMergeTree,案例,根据排序键去重,使用版本参数的去重(学习笔记)
- Storm通信机制,Worker进程间通信,Worker进程间通信分析,Worker进程间技术(Netty、ZeroMQ),Worker 内部通信技术(Disruptor)(来自学习资料)
- caffe学习:通过研读classification.cpp了解如何使用caffe模型