为什么我的代码在代码中使用MessageBox.Show()并且没有它就无法工作?

时间:2018-05-31 18:35:45

标签: c#

我想保存网页源代码,我有以下代码:

WebBrowser browser = new WebBrowser();
browser.ScriptErrorsSuppressed = true;
int SleepTime = 5000;
loadPage: browser.Navigate("https://google.com");
System.Threading.Thread.Sleep(SleepTime);
MessageBox.Show("browser.Navigae OK");
if(browser.ReadyState == WebBrowserReadyState.Complete)
{
    string path = @"htmlCode.txt";
    if(browser.Document.Body.Parent.InnerText != null)
    {
        File.WriteAllText(path, browser.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(browser.Document.Encoding));
        MessageBox.Show("Success! htmlCode.txt created");
        break;
    }
    else
    {
        MessageBox.Show("browser.Document.Body.Parent.InnerText=" + browser.Document.Body.Parent.InnerText);
        MessageBox.Show("Failure htmlCode.txt not created");
    }
}

如果我发表评论

  

MessageBox.Show(“browser.Navigate OK”);

我的代码无效......为什么?

1 个答案:

答案 0 :(得分:-1)

为什么不起作用?

典型的Race condition

导航需要时间才能完成。您的MessageBox.Show就像一个巨大的延迟缓冲区,它为Web浏览器提供了足够的时间来完成操作。

您应该使用DocumentCompleted事件来确保不会发生这种情况。