C#使用MSHTML多线程抓区WEB页面

本文探讨了在使用异步方式抓取Web页面时遇到的IHTMLDocument2类型转换问题,并给出了通过设置线程属性为单线程公寓状态来解决这一问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用的这个抓页面

   WebRequest wrq = HttpWebRequest.Create(textBox1.Text.Trim());
然后解析

HTML解析的例子到处都是。。。搜一个吧!

(狗狗这个串IPersistStreamInit pPersist = pDocument as IPersistStreamInit;)

主要说 在使用异步抓取WEB页面的时候,会碰到

 IHTMLDocument2 pDocument=(IHTMLDocument2)new HTMLDocumentClass();
IMarkupServices ms=(IMarkupServices)pDocument;

无法类型转换的问题

网上好像没有这个问题直接的解决办法。 

其原因是这个组件要求线程类型是单线程单元的而异步出来的线程是多线程的MTA的

俺就是自己建了几个线程

Thread.CurrentThread.ApartmentState=ApartmentState.STA;

我没找到怎么修改线程池默认模式,高手指点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值