我正在使用DotNetBrowser,或者至少正在尝试这样做,并且正在尝试获取文档中的所有复选框。

public static void SetCodecSettings()
    {
        var waitEvent = new ManualResetEvent(false);
        _mf.Browser.FinishLoadingFrameEvent += delegate(object sender, FinishLoadingEventArgs e)
        {
            if (e.IsMainFrame)
            {
                waitEvent.Set();
                var doc = _mf.Browser.GetDocument();
                var html = _mf.Browser.GetHTML();
                var checkBoxes = doc.GetElementsByTagName("input");
            }
        };
        _mf.Browser.LoadURL(_mf.PattonDeviceUrl + "/codecset.htm");
        waitEvent.WaitOne();
    }


当我放置一个断点,以便可以检查checkBoxes中的所有内容时,在调试器中扩展checkBoxes时会出现以下错误:
c# - DotNetBrowser DOMNode调试-LMLPHP

我不想关闭属性评估,因为我想检查该项目的内容。关于如何纠正这一点的任何建议?

最佳答案

Chromium引擎在单独的过程中运行。 DotNetBrowser库使用多个线程在Chromium引擎和.NET端之间交换数据。几乎所有评估都涉及IPC,因为DotNetBrowser本身不会执行任何数据缓存。

当Visual Studio在某个断点处停止应用程序时,某些DotNetBrowser线程将被暂停。在这种情况下,库无法从Chromium进程获取数据和处理请求。这就是为什么您无法在调试器中求值表达式的原因。

当调试多进程应用程序时,不仅是DotNetBrowser,此问题相当普遍。解决方法是,可以使用日志记录在运行时显示所需的数据。

下面的文章解释了观察到的行为:

https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000117030--the-function-evaluation-requires-all-threads-to-run-message-in-debugger-or-quick-watch

08-27 01:22