我想在webBrowser1_DocumentCompleted事件中等一段时间。 原因是当下一个文档完成时,Webbrowser文档流可以很好地下载。 我不想在等待时阻止用户界面,而且我不想让上传的Document_Completed_Events被解雇。
private void FormTimer()
{
webBrowser1.Navigate("http://www.rolex.com/");
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
DownloadCount++;
alarmCounter = 0;
Task abc = new Task(() =>
{
while (alarmCounter < 5)
{
Thread.Yield();
}
});
abc.Start();
Task.WaitAny(abc);
}
void timer_Tick(object sender, EventArgs e)
{
alarmCounter++;
}
问题是,当它在DocumentCompletedEvent中时,tick会停止.Kindly帮助我理解问题以及处理这些情况的好方法。
更新 通过分离预期的不需要的事件并使用DoEvents(),这种技术可以工作。它还可以保持UI响应以及计时器滴答。
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
richTextBox1.Text += "\nDocument Started" + documentCount;
alarmCounter = 0;
timer.Enabled = true;
//Do some work
webBrowser1.DocumentCompleted -= webBrowser1_DocumentCompleted;
while (alarmCounter < 3)
{
Application.DoEvents();
}
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
richTextBox1.Text += "\nDocument Completed." + documentCount;
}
答案 0 :(得分:1)
您使用的是Windows.Forms.Timer吗?您应该知道,Windows.Forms.Timer在与UI相同的线程中执行什么。所以你调用Task.WaitAny你阻止线程,你的计时器停止工作。