gpt4 book ai didi

c# - System.Windows.Controls.WebBrowser WPF 的 NullReferenceException

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:34 25 4
gpt4 key购买 nike

我有一个 C# WPF 应用程序,它带有一个名为 wB 的 Web 浏览器控件 (System.Windows.Controls.WebBrowser)。它应该显示本地 html 文件,以及从中解析的一些信息。

我得到一个 NullReferenceException,因为它在最后一行 (IHTMLElementCollection data = hDoc.body.children as IHTMLElementCollection) 中说 body 为 null,代码如下:

wB.Navigate(new Uri(file, UriKind.Absolute));                
HTMLDocument hDoc = (HTMLDocumentClass)wB.Document;
IHTMLElementCollection data = hDoc.body.children as IHTMLElementCollection;

如果我这样做

wB.Navigate(new Uri(file, UriKind.Absolute));                
HTMLDocument hDoc = (HTMLDocumentClass)wB.Document;
System.Windows.MessageBox.Show("Loc:" + hDoc.url);
IHTMLElementCollection data = hDoc.body.children as IHTMLElementCollection;

一切正常。为什么 body 在第一个示例中显示为 null,但在第二个示例中显示正常?

编辑1该方法被标记为 [STAThread]...所以我认为并发不会成为问题...

最佳答案

那是因为 Navigate() 方法是异步的 - 在第二个示例中,您确认 MessageBox 有足够的时间完成它,所以它可以工作 - 虽然不可靠。

相反,您应该订阅 DocumentCompleted事件并在回调中收集数据。

关于c# - System.Windows.Controls.WebBrowser WPF 的 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com