【发布时间】:2015-01-14 10:27:34
【问题描述】:
我想在网页完全加载到我的 Winforms WebControl 之后显示一个 MessageBox。
我用这段代码来延迟:
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)
{
}
}
按照 Ahmed ilyas 的建议,我按以下方式修改了代码
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 事件。 msdn.microsoft.com/en-us/library/…
-
另外,
Task.Delay(2000)实际上不会导致您的代码等待,除非您将其称为await Task.Delay(2000)或Task.Delay(2000).Wait()
标签: c# delay web-controls