如何从`async Task`函数返回值?

use*_*811 0 asp.net wcf async-await

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

    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;
    }
Run Code Online (Sandbox Code Playgroud)

Ste*_*ary 5

将您的退货类型更改Task<string>为:

public static async Task<string> testWCF2(string xmlConfig)
Run Code Online (Sandbox Code Playgroud)

那你就可以了 return submitOut;

返回值后,使用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;
}
Run Code Online (Sandbox Code Playgroud)

我建议阅读基础知识async.