string htmlstr = string.Empty;
[STAThread]
public string GetHtmlByWeb(string url)
{
try
{ RunWithSingleThread(url);
DateTime dtime = DateTime.Now;
double timespan = ;
//等待 页面加载完毕 并获取到参数
while (string.IsNullOrWhiteSpace(htmlstr) && timespan < )
{
DateTime time2 = DateTime.Now;
timespan = (time2 - dtime).TotalSeconds;
}
// double lo = DateTime.Now.Subtract(dtime).TotalSeconds;
}
catch (Exception)
{ }
finally
{
if (t != null && t.ThreadState == ThreadState.Running)
{
t.Abort();
}
} return htmlstr;
} //线程
private Thread t;
//异步执行WebBrowser
public void RunWithSingleThread(object url)
{
ParameterizedThreadStart ps = new ParameterizedThreadStart(GetHtmlWithBrowser);
t = new Thread(ps);
t.IsBackground = true;
t.ApartmentState = ApartmentState.STA;
t.Start(url);
} private WebBrowser wb;
private void GetHtmlWithBrowser(object url)
{
htmlstr = string.Empty; wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true; //防止脚本异常跳出弹窗
wb.ScrollBarsEnabled = true;
wb.Navigate(url.ToString()); wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
while (wb.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents(); //避免假死,若去掉则可能无法触发 DocumentCompleted 事件。
} }
//获取内容
public void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
htmlstr = wb.Document.Body.InnerHtml; }

最新文章

  1. Swift介绍
  2. IOS 学习资料
  3. linux shell中,单引号、 双引号,反引号(``),$()的区别
  4. nginx报file not found错误
  5. iOS9下修改回HTTP模式进行网络请求
  6. 11g Rac 切换
  7. Spring中一个类的注入和引用是不一样的
  8. linux blast
  9. swagger常用注解说明
  10. 洛谷 P2256 一中校运会之百米跑
  11. c++11实现一个简单的lexical_cast
  12. 任意flex控件导出图片
  13. Ubuntu 安装 搜狗输入法
  14. 我爱C语言
  15. 别人的dubbo学习笔记
  16. 简单的方法实现仿微信底部的Tab选项卡界面
  17. DataGridView根据条件给单元格绑定图片
  18. 初识prufer序列
  19. wamp环境初步使用
  20. 网易技术分享:Nginx缓存引发的跨域惨案

热门文章

  1. 题解报告:hdu 1203 I NEED A OFFER!(01背包)
  2. 基于Ubuntu14.04下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)
  3. iOS开发 - CoreData框架 数据持久化
  4. Windows10系统切换JDK版本(前提是装了多个版本的JDK)
  5. Spring------IOC&amp;DI
  6. 无聊的我写了一个代码 。。。P1605 迷宫
  7. oracle 表之间的连接
  8. struts2 针对类型转换出错的处理
  9. convertquota - 把老的配额文件转换为新的格式
  10. basename - 从文件名中剥离目录和后缀