私は 'アクション'で非同期を使用しますが、同時に3つのタブでページにアクセスすると常に同期します。なぜ非同期アクション(async await)でasp.net mvcを常に同期するのですか?
私は、次のタブページの 'startTime'が前のタブ 'endTime'であることを確認します。これは非同期ではありません。
ありがとうございます。
public class TestController : Controller
{
public async Task<string> Index()
{
return await Task.Run(() =>
{
List<string> lst = new List<string>();
lst.Add(string.Format("startTime:{0}", DateTime.Now.ToString()));
var s = new Stopwatch();
s.Start();
System.Threading.Thread.Sleep(10000);
s.Stop();
lst.Add(string.Format("endTime:{0}", DateTime.Now.ToString()));
lst.Add(string.Format("total:{0}", s.Elapsed.TotalSeconds.ToString()));
return string.Join("<br/>", lst.ToArray());
});
}
}
あなたは、非同期コントローラメソッドが何であるか誤解しているかもしれません。これは、長時間実行されているタスクでは、スレッドがスレッドプールに返され、より多くの要求を処理できることを意味します(メソッドの実行に要する時間は短縮されません)。 [ASP.NETの非同期メソッド](https://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4) –
ですが、UIは常に待機しています。以前の要求が完了するまで。 –
これは、メソッドを非同期にすることとは関係ありません。 –