如何解决通过while循环循环javascript时,Web Brower没有响应
我遇到一个问题,即通过while循环循环javascript时,Web浏览器没有响应,因此我无法取消此循环或使用Web浏览器执行任何操作。
我正在触发带有复选框的javascript,并且选中后无法取消选中该复选框,因为我的浏览器在循环时没有响应
代码如下:
private void checkBox1_CheckedChanged(object sender,EventArgs e)
{
while (checkBox1.Checked == true)
{
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white'); elems[0].click();");
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems1 = document.getElementsByClassName('task-skip-submit js-next-question'); elems1[0].click();");
}
}
解决方法
我对cefsharp不太熟悉,但是从C#的角度来看,除非该方法是异步的,否则Thread.Sleep仍然不会放弃对UI循环的控制回到前端。也许不是这样,但是您是否尝试过将checkBox1_CheckChanged
变成async Task
?
如果这不是一个选择,那么我认为您需要将while循环插入后台线程。您有使用异步上下文的地方吗?
Task.Run(() => {
while (checkBox1.Checked == true)
{
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white'); elems[0].click();");
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems1 = document.getElementsByClassName('task-skip-submit js-next-question'); elems1[0].click();");
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。