我想显示一个MessageBox正确后该网页完全加载到我的Winforms WebControl中。如何在执行下一行之前等待一秒
我用这个代码延迟:
System.Threading.Thread.Sleep(4000);
Task.Delay(2000);
这些都不是工作。问题是我得到了一个无限循环。
有人可以给我一个解决方案或任何更好的替代品(如果有的话)?
这里是我的代码
private void btnGo_Click(object sender, EventArgs e)
{
try
{
string WebPage = txtURL.Text.Trim();
Webcntrl.Navigate(WebPage); // Webcntrl is Name of webcontrol in my Windows Applications
while (Webcntrl.ReadyState.ToString() != "Complete")
{
//System.Threading.Thread.Sleep(4000);
//Task.Delay(2000);
}
MessageBox.Show("hI ! website loaded Sucessfully");
}
catch (Exception ex)
{
}
}
按艾哈迈德·伊利亚斯建议我修改后的代码按以下
private void btnGo_Click(object sender, EventArgs e)
{
try
{
string WebPage = txtURL.Text.Trim();
Webcntrl.Navigate(WebPage); // Webcntrl is Name of webcontrol in my Windows Applications
Webcntrl.DocumentCompleted +=new WebBrowserDocumentCompletedEventHandler(SiteLoaded);
}
catch (Exception ex)
{
}
}
private void SiteLoaded(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("hI ! website loaded Sucessfully");
}
但现在,消息弹出多次。
“但两者都不起作用“并不能很好地描述你的问题。究竟出了什么问题? –
您应该使用Web浏览器控件的documentcomplete事件。 http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted(v=vs.110).aspx –
此外,'Task.Delay(2000)'实际上不会导致你的代码等待,除非你把它称为'等待Task.Delay(2000)'或'Task.Delay(2000).Wait()' –