如何从“异步任务"函数返回值? [英] how do I return values from a `async Task` function?

查看:332
本文介绍了如何从“异步任务"函数返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从下面的async Task testWCF2函数返回值submitOut?任何人都可以提供操作指导吗?

I need to return the value submitOut from async Task testWCF2 function below?Can anyone provide guidance on how to do it?

    public static async Task testWCF2(string xmlConfig)
    {
        string submitOut;

        using (var client = new System.Net.Http.HttpClient())
        {
            var url = "http://server:8100/api/SoftwareProductBuild";
            var content = new StringContent(xmlConfig, Encoding.UTF8, "application/xml");
            var response = await client.PostAsync(url, content);
            if (response.IsSuccessStatusCode)
            {
                var responseBody = await response.Content.ReadAsStringAsync();
                submitOut = responseBody;
            }
            else
            {
                submitOut = string.Format("Bad Response {0} \n", response.StatusCode.ToString());
                submitOut = submitOut + response;
            }
        }
    }

    public string QlasrSubmit(List<XMLSiInfo> xmlConfigs)
    {
        string submitOut = "QLASR: ";

        foreach (XMLSiInfo xmlConfig in xmlConfigs)
        {
            submitOut = submitOut + "\n" + testWCF2(xmlConfig.xml).ToString();
        }

        return submitOut;
    }

    public string QlasrPostcommit(string si, string sp, string variant = null)
    {
        .............
        string submitStatus            = QlasrSubmit(siInfo);
        ....
        return submitStatus;
    }

推荐答案

将返回类型更改为Task<string>,例如:

Change your return type to Task<string>, as such:

public static async Task<string> testWCF2(string xmlConfig)

然后您就可以return submitOut;

一旦返回一个值,就可以使用await来使用它:

Once you are returning a value, then you consume it using await:

public async Task<string> QlasrSubmit(List<XMLSiInfo> xmlConfigs)
{
  string submitOut = "QLASR: ";

  foreach (XMLSiInfo xmlConfig in xmlConfigs)
  {
    submitOut = submitOut + "\n" + await testWCF2(xmlConfig.xml);
  }

  return submitOut;
}

我建议阅读async基础知识.

I recommend reading up on the basics of async.

这篇关于如何从“异步任务"函数返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆