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。作为解决方法,您可以使用日志记录在运行时显示所需数据。
以下文章解释了观察到的行为:
我正在使用 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。作为解决方法,您可以使用日志记录在运行时显示所需数据。
以下文章解释了观察到的行为: