Web浏览器未触发DocumentCompleted事件

问题描述 投票:0回答:1

我正在尝试使用WebBrowser,因为我需要与通过JS创建的一些元素进行交互,而不是在原始响应中出现。

我已经阅读了其他问题,其中事件没有被触发,因为单线程程序正在等待读取密钥或类似的东西,因此事件不能被触发。

但是,在我的情况下,它只是完成程序,并且永远不会输入Client_DocumentCompleted方法。

[STAThread]
static void Main(string[] args)
{
    Helper();
}

static void Helper()
{

    WebBrowser client = new WebBrowser();
    client.DocumentCompleted += Client_DocumentCompleted;
    client.AllowNavigation = true;
    client.Navigate("https://www.google.com/");
}

private static void Client_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser client = (WebBrowser)sender;
    while (client.ReadyState != WebBrowserReadyState.Complete)
    {
        Console.WriteLine(client.ReadyState);
    }
    string htmlCode = client.Document.ToString();
    Console.Write(htmlCode);

    Console.ReadKey();
}

我尝试在单独的线程中进行WebBrowser交互但没有成功。

var t = new Thread(Helper);
t.SetApartmentState(ApartmentState.STA);
t.Start();

编辑:已更新以包含我的解决方案中已存在的[STAThread]属性

c# webbrowser-control
1个回答
1
投票

你应该将STAThread属性添加到你的Main

[STAThread]
static void Main(string[] args)
{
    //...
}

使用COM组件时需要这样做

© www.soinside.com 2019 - 2024. All rights reserved.