Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等待WebBrowser中的URL加载C#_Browser_C#_Wait - Fatal编程技术网

等待WebBrowser中的URL加载C#

等待WebBrowser中的URL加载C#,browser,c#,wait,Browser,C#,Wait,我正在开发一个程序,可以自动以批处理的形式重新发布Craigslist的帖子 我正在执行一个名为arrayTest()的方法,该方法包含一行webBrowser1.Navigate(URL[I])。这将从数组中获取URL,并让webBrowser1打开它。执行后,clickRepost()方法。此方法模拟按钮单击。但是该方法在webBrowser1完成打开URL之前执行 我需要的帮助是告诉程序等待webBrowser1完成打开URL,然后再转到下一个方法 到目前为止,我所尝试的: Task t

我正在开发一个程序,可以自动以批处理的形式重新发布Craigslist的帖子

我正在执行一个名为
arrayTest()
的方法,该方法包含一行
webBrowser1.Navigate(URL[I])。这将从数组中获取URL,并让
webBrowser1
打开它。执行后,
clickRepost()方法。此方法模拟按钮单击。但是该方法在
webBrowser1
完成打开URL之前执行

我需要的帮助是告诉程序等待
webBrowser1
完成打开URL,然后再转到下一个方法

到目前为止,我所尝试的:

Task t = Task.Run(() => {
    webBrowser1.Navigate(urls[i]);
})
t.wait();
clickRepost();
这仍然会导致
clickRepost()
不允许
webBrowser1
完成URL的加载。我还尝试在调用方法之间添加
System.Threading.Thread.Sleep(5000)
,但在Java中这样做时,它只关闭程序x秒

这是我节目的一部分,真的是我唯一遇到麻烦的部分

private void arrayTest()
    {
        String[] urls = CLLinks.Text.Split('\n');
        for (int i = 0; i < urls.Length; i++)
        {
            log.AppendText("Opening Url...\n");
            webBrowser1.Navigate(urls[i]);
            log.AppendText("Reposting...\n");
            clickRepost();
            log.AppendText("Checking Completion...");
            webBrowser1.Navigate(urls[i]);
            completionCheck();
        }
    }

    private void CLRenBtn_Click(object sender, EventArgs e)
    {
        arrayTest();
    }

    private void completionCheck()
    {
        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("input");

        foreach (HtmlElement item in col)
        {
            if (!(item.GetAttribute("value") == "Renew this Posting"))
            {
                log.AppendText("Renew Posting does not exist");
            }
            else
            { }
        }
    }

    private void clickRepost()
    {
        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("input");

        foreach (HtmlElement item in col)
        {
            if (item.GetAttribute("value") == "Renew this Posting")
            {
                item.InvokeMember("click");
            }
            else
            {}
        }
    }
private void arrayTest()
{
字符串[]URL=CLLinks.Text.Split('\n');
for(inti=0;i
CLRenBtn\u单击
是我在表单上按下的开始重新过账的按钮<代码>arrayTest()
将更改为更相关的名称。当时我正在测试这是否可行。我计划合并
clickRepost()
completionCheck()
,因为它们做的是相同的事情

非常感谢

找到了答案!


这对我来说很好,但现在我的小问题是,当我开始重新发布时。它跳过数组中的第一个url,并发布后面的url。

下次发布有关堆栈溢出的编程问题时。谢谢