在确定其值之前使用 C# 变量

  • 本文关键字:变量 c# .net webclient
  • 更新时间 :
  • 英文 :


该代码应从网页中获取一条信息。我的问题是它不会显示出来,也不知道为什么。

我想以某种方式等待文档完成而不创建该功能。

我想从较大文件中修复的实际代码:

public static string GetNews()
{
    WebBrowser page = new WebBrowser();
    string data = null;
    page.Navigate(launcherScriptAddress);
    page.DocumentCompleted += delegate {
    data = page.Document.GetElementById("news").InnerText;
        // can't return `data` from here
    };
    return data; // returns null because it doesn't wait for document to be completed
}

这不会像您尝试这样做的方式一样工作。您的函数在页面之前返回。

因此,您唯一可以做的就是将回调转到您在代表内执行的getNews-unction。

Sync< -> async。

的旧问题

此外,您应该交换语句。为了确保"页面"在重新加载任何内容之前都具有回调集。

[编辑]为此,您需要创建一个委托并更改您的功能:

public delegate void NewsCallback( string dataReceived );
public static void GetNews( NewsCallback callback )
{
    WebBrowser page = new WebBrowser();
    string data = null;
    page.Navigate(launcherScriptAddress);
    page.DocumentCompleted += delegate {
       data = page.Document.GetElementById("news").InnerText;
       callback( data );
    };
}

之后,您可能需要这样称呼:

void CallMyNews(){
    GetNews( (dataReceived) => {
      DoSomeStuffWith(dataReceived);
    } );
}

相关内容

  • 没有找到相关文章

最新更新