【发布时间】:2012-04-03 18:31:23
【问题描述】:
我使用.NET的webbrowser控件打开一堆url,在DocumentCompleted事件中调用循环。
现在我想控制超时。所以我使用了一个计时器,当超时时,它将使用 stop() 函数停止网络浏览器。
问题是:似乎停止函数会触发 DocumentCompleted 事件有时。因此,如果计时器在停止网络浏览器后调用下一个循环,则会发生错误。如果它没有调用下一个循环,有时循环会在中间停止。
这样的程序(不相关的代码被删除):
private string[] urls;//urls are stored here
private int index = 0;//next url index
private void loopFunc()
{
timer.Enabled = true;
wb.navigate(urls[index]);
index++;
return;
}
private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
loopFunc();
}
private void timer1_Tick(object sender, EventArgs e)
{
wb.stop();
//loopFunc() or not?
}
我不确定它是否会触发该事件,我通过谷歌一无所获。
【问题讨论】:
-
我记得 DocumentCompleted 有一个非常奇怪的行为。这帮助我解决了我的问题stackoverflow.com/questions/2328835/…。
-
@plurby:多线程是我的建议。但是,也有一些奇怪的行为。
-
仅供参考,WebBrowser 控件与 C# 无关。它是 .NET 的一部分,而不是 C# 的一部分。
标签: c# browser webbrowser-control