C#で非同期コードを書こうとしている間に、非同期であると確信していましたが、最近私は郵便配達員関数が非同期で同期をとっているときに関数が完了するのにかかる時間と、同じ時間が正確にかかるように見えますが、私のコードで何が間違っていましたか?ここでasync/awaitで書いても非同期操作が動作しない - C#
が私のコードです:
[HttpGet]
[Route("customerslist")]
public async Task<IHttpActionResult> getData()
{
string url1 = @"https://jsonplaceholder.typicode.com/photos";
string url2 = @"https://jsonplaceholder.typicode.com/comments";
string url3 = @"https://jsonplaceholder.typicode.com/todos";
Task<string> firstTask = myHttpCall(url1);
Task<string> secondTask = myHttpCall(url2);
Task<string> thirdTask = myHttpCall(url3);
await Task.WhenAll(firstTask, secondTask, thirdTask);
var result = firstTask.Result + secondTask.Result + thirdTask.Result;
return Ok(result);
}
private async Task<string> myHttpCall(string path)
{
string html = string.Empty;
string url = path;
// Simple http call to another URL to receive JSON lists.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
html = reader.ReadToEnd();
}
return html;
}
私は彼らのJSONリストを取得するには、別のURLにHTTPリクエストを行い、誰も私を助けてくださいことができますか?誰かが私にそれを正しく書く方法を教えてもらえれば幸いです。
はなぜ実行時間は、同期と非同期のために何が違うのでなければなりません?特に、他のコードを実行していない場合は、実行されるコードの量は同じです。 – jdweng
'myHttpCall'メソッドについては、何も非同期ですが、内部で何も待っていません。 – DavidG
実際には、非同期メソッドについての警告を待つ必要はありません。 –