DotNetBrowser DOMNode调试

DotNetBrowser DOMNode debugging

我正在使用 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();
    }

当我放置断点以便检查复选框中的所有内容时,在调试器中展开复选框时出现以下错误:

我不想关闭 属性 评估,因为我想检查该项目的内容。关于如何纠正这个问题有什么建议吗?

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