为了账号安全,请及时绑定邮箱和手机立即绑定

如何访问放置在该 void 之外的 async void 中的字符串值

如何访问放置在该 void 之外的 async void 中的字符串值

C#
拉莫斯之舞 2021-10-31 19:06:03
这是我的代码。我使用 async void 从 Internet 下载一些数据。我将此数据存储在名为“Strona”的字符串变量中。我想在异步无效之外使用“Strona”的值。是否有可能以任何方式退回或访问它?private async void starthttp(){    string strona = "";    response = await Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);    var html = new HtmlDocument();    html.Load(response.GetResponseStream());    var nodes = html.DocumentNode.Descendants("img")        .Where(node => node.GetAttributeValue("alt", "")        .Equals("Celny")).ToList();    foreach (var node in nodes)    {            strona = strona + node.OuterHtml;    }    strona = strona.Replace('"', '\u0027');    strona = strona.Replace("< ", "<");}
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

Async 方法可以具有以下返回类型:

  • Task<TResult>, 用于返回值的异步方法。

  • Task, 用于执行操作但不返回任何值的异步方法。

  • void, 对于事件处理程序

在您的情况下,Task<string>用于返回字符串而不是 void 的任务

private async Task<string> starthttp()

{

    string strona = "";

    //your code stuff            

    return strona;

}


查看完整回答
反对 回复 2021-10-31
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

草率的做法是声明全局变量并在您的方法中为其赋值,所以:


string stronaValue = "";

    private async void starthttp()

{

    string strona = "";


    response = await Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);


    var html = new HtmlDocument();

    html.Load(response.GetResponseStream());

    var nodes = html.DocumentNode.Descendants("img")

        .Where(node => node.GetAttributeValue("alt", "")

        .Equals("Celny")).ToList();



    foreach (var node in nodes)

    {

            strona = strona + node.OuterHtml;

    }


    strona = strona.Replace('"', '\u0027');

    strona = strona.Replace("< ", "<");

    stronaValue = strona;

}

但是,我建议将上述方法与 Task 一起使用。


查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信