none
如何在非UI线程下使用WebBrowser RRS feed

  • 问题

  •   各位好!

         需求:打开N个网站,自动刷新(逻辑处理重新指定跳转页面 )

         实现:在C#中使用MDI窗口打开多个包含WebBrowser 的自定义控件,自动刷新网页,或参考业务逻辑重新 指定跳转页面。 并在MDI窗口中记录所打开的网页以及刷新的次数。

        问题:N个网站同时在UI线程中运行影响操作,性能不好。

        解决方案:一个自定义控件 在一个线程中运行。

       目前遇到的困难:

         1.如何在非UI线程中打开MDI子窗口

         2.WebBrowser控件不能直接在非UI线程中使用

              “无法获取“WebBrowser”控件的窗口句柄。不支持无窗口的 ActiveX 控件。”

              线程标识为SAT也不行。

       

    期待帮助,或提供另一种解决方案!

      

     


    人啊,要耐得住寂寞!

    2012年11月8日 16:12

答案

  •    Hi, Stone Z ,Thankyou !

       使用HttpReuest是一种获取解析网页内容的方式,但是无法满足我的需求。

       我希望能直观的看到每一个WEB的执行(虽然不是一直观察)。

       一直没有解决此问题,于是想到了IE的自动化以及Firefox的插件开发,但是苦于没有相关的开发经历,也没有找到一些可供研究与学习的资料。

       继续期待帮助。


    人啊,要耐得住寂寞!

    • 已标记为答案 devYu 2012年11月10日 2:58
    2012年11月9日 13:23
  • 不知道你注意到没有,ie,chrome等每个选项卡在系统中都是一个独立进程。是否可以参照这个思路使用进程而不是线程的方式来处理?

    family as water

    • 已标记为答案 devYu 2012年11月10日 2:57
    2012年11月9日 14:32

全部回复

  • 你可以在一个ui界面上放多个wb控件,然后轮询的方式打开。

    但是wb这个是资源大户,建议直接使用http request的方式来打开,因为你打开这么多估计也不是看的,所以这个方式效率高而且用线程处理也方便。


    family as water

    2012年11月9日 6:05
  •    Hi, Stone Z ,Thankyou !

       使用HttpReuest是一种获取解析网页内容的方式,但是无法满足我的需求。

       我希望能直观的看到每一个WEB的执行(虽然不是一直观察)。

       一直没有解决此问题,于是想到了IE的自动化以及Firefox的插件开发,但是苦于没有相关的开发经历,也没有找到一些可供研究与学习的资料。

       继续期待帮助。


    人啊,要耐得住寂寞!

    • 已标记为答案 devYu 2012年11月10日 2:58
    2012年11月9日 13:23
  • 不知道你注意到没有,ie,chrome等每个选项卡在系统中都是一个独立进程。是否可以参照这个思路使用进程而不是线程的方式来处理?

    family as water

    • 已标记为答案 devYu 2012年11月10日 2:57
    2012年11月9日 14:32
  •     确实如此,IE一个Tab一个进程。

       利用IE内核开发一个简洁的多进程浏览器以实现自我需求。

        谢谢,Stone Z 给出的思路。


    人啊,要耐得住寂寞!

    2012年11月10日 2:57