网络浏览器执行流程

魔术师

我有这段代码,可以轻松导航到网站

class BrowsingUrl {
    private System.Windows.Forms.WebBrowser nBrowser ;
        private  System.Windows.Forms.Form theFormLayout1;

    public BrowsingUrl(System.Windows.Forms.Form theFormLayout) {

            this.nBrowser = new System.Windows.Forms.WebBrowser();
            this.nBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
            this.nBrowser.Location = new System.Drawing.Point(0, 0);
            this.nBrowser.MinimumSize = new System.Drawing.Size(20, 20);
            this.nBrowser.Name = "webBrowser1";
            this.nBrowser.ScrollBarsEnabled = false;
            this.nBrowser.Size = new System.Drawing.Size(1300, 700);
            this.nBrowser.TabIndex = 0;
            this.theFormLayout1 = theFormLayout;
            this.theFormLayout1.Controls.Add(this.nBrowser);
            this.nBrowser.Navigate("https://stackoverflow.com");
            this.nBrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.nBrowser_DocumentCompleted);
   }

   private void nBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
   {

        // do stuff
   }
}    

如果创建一个browserurl对象,一切正常,但是如果创建两个对象,似乎两个构造函数同时运行,那么我如何让第二个对象等到第一个结束执行

public partial class Form1 : Form
{
        public Form1()
        {
            InitializeComponent();
        }

        private void startbtn_Click(object sender, EventArgs e)
        {
            BrowsingUrl BrowsingUrl1 = new BrowsingUrl(this);
            //wait till browsingUrl1 finish
            BrowsingUrl BrowsingUrl2 = new BrowsingUrl(this);
        }
}    
Vojtech多纳尔

in的值设置_isLoadedtruein,nBrowser_DocumentCompleted并使其可以作为公共属性访问。还添加ScriptErrorsSuppressed = true

    class BrowsingUrl
    {
        private System.Windows.Forms.WebBrowser nBrowser;
        private System.Windows.Forms.Form theFormLayout1;
        private bool _isLoaded = false;
        public bool IsLoaded
        {
            get { return _isLoaded && !nBrowser.IsBusy && 
                  nBrowser.ReadyState == WebBrowserReadyState.Complete; }
        }
        public BrowsingUrl(System.Windows.Forms.Form theFormLayout)
        {

            this.nBrowser = new System.Windows.Forms.WebBrowser();
            this.nBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
            this.nBrowser.Location = new System.Drawing.Point(0, 0);
            this.nBrowser.MinimumSize = new System.Drawing.Size(20, 20);
            this.nBrowser.Name = "webBrowser1";
            this.nBrowser.ScrollBarsEnabled = false;
            this.nBrowser.Size = new System.Drawing.Size(1300, 700);
            this.nBrowser.TabIndex = 0;
            this.theFormLayout1 = theFormLayout;
            this.theFormLayout1.Controls.Add(this.nBrowser);
            this.nBrowser.ScriptErrorsSuppressed = true;
            this.nBrowser.Navigate("https://stackoverflow.com");
            this.nBrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.nBrowser_DocumentCompleted);
        }
        private void nBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //check for frames
            if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
                return;

            // do stuff
            //Sample do stuff
            Thread.Sleep(10000);
            // end do stuff

            _isLoaded = true;
        }
    }  

然后您可以等待直到BrowsingUrl1加载:

        BrowsingUrl BrowsingUrl1 = new BrowsingUrl(this);
        //Wait for the first page to load
        while (!BrowsingUrl1.IsLoaded)
        {
            Application.DoEvents();
        }
        BrowsingUrl BrowsingUrl2 = new BrowsingUrl(this);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python for循环,网络浏览器

来自分类Dev

更改网络浏览器光标

来自分类Dev

strace vs网络浏览器

来自分类Dev

Webhttrack 默认网络浏览器

来自分类Dev

网络浏览器:连接被拒绝

来自分类Dev

如何制作网络浏览器?

来自分类Dev

如何从python的网络浏览器捕获HTTP错误

来自分类Dev

保存网络浏览器中显示的图像

来自分类Dev

检测网络浏览器或移动设备以显示链接

来自分类Dev

如何使用python从网络浏览器获取内容?

来自分类Dev

在网络浏览器上录制声音

来自分类Dev

如何使用“网络浏览器应用程序”?

来自分类Dev

在网络浏览器上阻止特定的URL

来自分类Dev

Kubuntu 18.04无法设置默认的网络浏览器

来自分类Dev

隐藏网络浏览器滚动条

来自分类Dev

如何从网络浏览器获取列

来自分类Dev

更改网络浏览器默认值

来自分类Dev

在网络浏览器中向下滚动页面

来自分类Dev

网络浏览器获取CSS和JavaScript文件

来自分类Dev

无法通过网络浏览器访问rancid

来自分类Dev

在网络浏览器中查看信息页面

来自分类Dev

如何确定我的网络浏览器是否安全?

来自分类Dev

移动网络浏览器中的javascript

来自分类Dev

使用JavaScript最小化网络浏览器

来自分类Dev

Javascript-列出网络浏览器下载的文件

来自分类Dev

如何制作批处理网络浏览器?

来自分类Dev

屏幕旋转时重新加载网络浏览器

来自分类Dev

RTC 网络浏览器(视频和音频)

来自分类Dev

网络浏览器上的 ReCaptcha 错误