Web浏览器在通过while循环循环javascript时没有响应

Web浏览器在通过while循环循环javascript时没有响应,javascript,c#,cefsharp,chromium-embedded,Javascript,C#,Cefsharp,Chromium Embedded,我有一个问题,当javascript在while循环中循环时,我的web浏览器没有响应,所以我不能取消这个循环或对我的web浏览器执行任何操作 我正在使用复选框触发javascript,选中复选框后无法取消选中该复选框,因为我的浏览器在循环时没有响应 代码如下: private void checkBox1_CheckedChanged(object sender, EventArgs e) { while (checkBox1.Checked == true)

我有一个问题,当javascript在while循环中循环时,我的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#方面来说,除非方法是异步的,线程。睡眠仍然不会将UI循环的控制权让给前端。也许情况并非如此,但您是否尝试过将
checkBox1\u CheckChanged
转换为
异步任务

如果这不是一个选项,那么我认为您需要将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();");
        }
});