2017-07-11 8 views
0

の値をasync Task testWCF2の関数から戻す必要がありますか?それを行う方法について誰でも指導できますか?`async Task`関数からどのように値を返すのですか?

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; 
    } 

答えて

4
のような、 Task<string>にあなたの戻り値の型を変更し

はその後
public static async Task<string> testWCF2(string xmlConfig) 

あなただけ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; 
} 

私はo n basics of async

+0

- 私の質問ビット更新、それは暗黙的に行 '文字列submitStatus = QlasrSubmit(siInfo)でstring''」にタイプ 'System.Threading.Tasks.Task ' を変換できません'エラーをスローします; ' – user3508811

+0

'QlasrPostcommit'戻り値の型を' Task ' – user3508811

+0

@ user3508811に変換せずに解決策があります:' QlasrSubmit'も非同期ですので、 'await'でそれを消費する必要があります。 –

3
public static async Task<string> 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; 
     } 
    } 

    return submitOut; 
} 
関連する問題