我想顯示一個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()' –