私は非常に基本的なasp.net Web APIコードをテンプレートに付属しているAzureに公開しました。私がデフォルトのGETアクションを試してみると、私はJSONレスポンスを受け取ります。["value1","value2"]
アンドロイドアプリケーションからAzure Web APIを呼び出すのは、応答待ちの間に永久にハングするだけです。
私のxamarin-androidプロジェクトから同じ呼び出しをしようとすると、レスポンスを待っている間、実行が永久にハングします。
私は、Visual Studio 2015を使用している私は、デバッグのために自分の携帯電話を接続します。
button.Click += onButtonClick;
}
private void onButtonClick(object sender, EventArgs e)
{
GetValuesSync().Wait();
}
private async Task GetValuesSync()
{
string ResponseJsonString = null;
string url =
"http://myWebapp.azurewebsites.net/api/values";
using (var httpClient = new HttpClient())
{
try
{
Task<HttpResponseMessage> getResponse = httpClient.GetAsync(url);
HttpResponseMessage response = await getResponse; //Execution hangs here forever ...
ResponseJsonString = await response.Content.ReadAsStringAsync();
values = JsonConvert.DeserializeObject<string[]>(ResponseJsonString);
}
catch (Exception ex)
{
throw;
}
}
}
これは、非同期ワークフロー非同期を残すために、常に良いでしょう
ここで、デッドロックが発生しました。「GetValuesSync()。Wait();」。 Richard77 @ –
:私は[非同期コードにはブロックしない]私[非同期のベストプラクティスに関するMSDNの記事](https://msdn.microsoft.com/en-us/magazine/jj991977.aspx)と私のブログの記事を読んでお勧めします(http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html)。 –