2016-05-05 23 views
0

次の問題があります。私は非同期Webレスポンスを待つことを試みます。 しかしそれは決して終わらなかった。非同期Webレスポンスの無限待機

public string getTermine(string trmId) 
    { 
     System.Threading.Tasks.Task<string> lisi = LoadTermine((HttpWebRequest)WebRequest.Create("http://" + curent.usrCH + apiKey + curent.phrase + apiTrmIDIS + trmId));//Request get String result like http://ajax.googleapis.com/ajax/services/search/web?v=1.0&start="+i+"&q= 
     lisi.Wait(); 
     return lisi.Result; 
    } 
    private async System.Threading.Tasks.Taskstring>LoadTermine(HttpWebRequest myRequest) 
    { 
     //List<Termine> terminListe = new List<Termine>(); 
     List<Appointment> Resu = null; 
     using (WebResponse response = await myRequest.GetResponseAsync()) 
     { 
      using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream())) 
      { 
       Resu = reader.ReadToEnd(); 

      } 
     } 
     return Resu; 
    } 

P.S.このメソッドはiOS、WinPhone、Androidで使用されているBaseコードの一部であり、同期WebResponseを取得できない理由はわかりません。

答えて

2

デッドロックを作成するには、タスクの.Resultを呼び出します。

remoteUrl variabledは、WebサービスのURL Async/Await

詳細については

private async System.Threading.Tasks.Task<string> LoadTermineAsync(HttpWebRequest myRequest) 
{ 
    using (var client = new HttpClient()) { 
     using (var request = new HttpRequestMessage(HttpMethod.Get, myRemoteUrl)) { 
      var response = await client.SendAsync(request).ConfigureAwait(false); 

      var result = await response.Content.ReadAsStringAsync().ConfigureAwait(false); 

      return result; 
     } 
    } 
} 

であり、このevolve videoがもう少し進んでいる。どこでこのような何かを行うことができます

+0

おかげさまで、この会議はとても役に立ちました。 – Neuxz

関連する問題