gpt4 book ai didi

c# - 在等待同一行代码时保持 UI 在主线程 webBrowser_DocumentCompleted 中响应

转载 作者:行者123 更新时间:2023-11-30 17:45:38 25 4
gpt4 key购买 nike

我想在 webBrowser1_DocumentCompleted 事件中等待一段时间。原因是当下一个文档完成时,Webbrowser 文档流可以很好地下载。我不想在等待时阻塞 UI,也不想触发即将到来的 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 时停止。请帮助我理解问题以及处理这些问题的好方法。

更新:这种技术通过分离预期的不需要的事件并转到 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;
}

最佳答案

您使用 Windows.Forms.Timer 吗?您应该知道,Windows.Forms.Timer 在与 UI 相同的线程中执行什么。然后你调用 Task.WaitAny 你阻塞线程并且你的计时器停止工作。

关于c# - 在等待同一行代码时保持 UI 在主线程 webBrowser_DocumentCompleted 中响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27266026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com