我正在使用DocumentCompleted
-
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
我正在导航 -
webBrowser1.Navigate("myUrl")
但是,如果对该服务器的请求挂起,即在10秒后页面没有完成,我该如何实现webBrowser1.Stop();
?
我确实尝试实现一个计数,如果它达到20,即webBrowser1_DocumentCompleted
进入无限循环(页面无法完成),那么停止但不确定这是否是最直接的做法htis?
答案 0 :(得分:0)
这可能是非常糟糕的做法所以我道歉但您可以使用带有计时器的布尔控件来检查文档是否已完成,如果没有,请关闭webBrowser。
首先在表单中添加一个计时器(假设它名为Timer1),将interval设置为1000并创建一个int和bool控件。
int timeLeft;
bool hasCompleted = false;
正常运行您的网址并启动计时器
webBrowser1.Navigate("myUrl");
timeLeft = 10;
Timer1.Start();
你的计时器应该是这样的;
private void timer1_Tick(object sender, EventArgs e)
{
if(timeLeft > 0) {
timeLeft = timeLeft - 1;
}
if(timeLeft = 0 && !hasCompleted)
{
timer1.Stop();
webBrowser1.Stop();
}
else{
timer1.Stop();
}
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
hasCompleted = true;
//your code
}
答案 1 :(得分:0)
我试图使用计时器来实现这一点。 我刚刚添加了一个计时器并设置了间隔。
这是代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Tick += timer1_Tick;
webBrowser1.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler( webBrowser1_DocumentCompleted);
LoadBrowser();
}
void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
webBrowser1.DocumentText = "Cancelled";
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (timer1.Enabled)
{
MessageBox.Show("Page Loaded succesfully");
}
}
private void LoadBrowser()
{
timer1.Enabled = true;
webBrowser1.Url = new Uri("http://www.microsoft.com");
}
}