私は以下のように新しいWebアプリケーションのテストコードを書くいる:私は非同期メソッドを呼び出すと、メインスレッドはすぐに応答を返さないのですか?
public ActionResult Index()
{
Logger.Write("start Index,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
MyMethodAsync(System.Web.HttpContext.Current.Request);//no await and has warning
Logger.Write("end Index,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
return View();
}
private async Task MyMethodAsync(HttpRequest request)
{
Logger.Write("start MyMethodAsync,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
await SomeMethodAsync(request);
Logger.Write("end MyMethodAsync,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
}
そして、ここでは、ログです:
2017年11月15日19:55:31.904開始インデックス、スレッドID:35
を2017年11月15日19:55:31.919開始MyMethodAsync、スレッドID:35
2017年11月15日19:55:31.919端インデックス、スレッドID:35
2017年11月15日19:55:53.324 end MyMethodAsync、threadId:46
クライアントブラウザーは約2017-11-15 19:55:32で応答を受け、私の理解に合致します。私の実際のプロダクション環境では、上記と同じログを書き込みますが、クライアントブラウザーは約22秒後に約2017-11-15 19:55:54に応答を受け取りました。メインスレッドが作業を完了したとしても、メインスレッドは新しいスレッドが作業を完了するまで応答を返しません。
私はこの問題をサーバー日でデバッグしています。私を手伝ってくれますか?
Paulo Morgadoありがとうございます。私はあなたが言ったことを知っています。しかし、なぜdifferenctソリューションの同じコードが異なる応答時間を持っていますか? –