我正在使用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中的所有内容,在调试器中展开checkBox时出现以下错误:
我不想关闭属性评估,因为我想检查该项目的内容。有关如何纠正此问题的任何建议吗?
答案 0 :(得分:3)
Chromium引擎在一个单独的过程中运行。 DotNetBrowser库使用多个线程在Chromium引擎和.NET端之间交换数据。几乎所有评估都涉及IPC,因为DotNetBrowser本身不执行任何数据缓存。
当Visual Studio在某个断点处停止应用程序时,某些DotNetBrowser线程将暂停。在这种情况下,库无法从Chromium进程获取数据和处理请求。这就是您无法在调试器中计算表达式的原因。
在调试多进程应用程序时,这个问题很常见,而不仅仅是DotNetBrowser。作为一种解决方法,您可以使用日志记录在运行时显示所需的数据。
以下文章解释了观察到的行为: