我想在「操作」中使用異步,但當我同時訪問帶有3個選項卡的頁面時,它總是同步。爲什麼總是在異步操作(異步等待)中同步在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 thead始終等待。直到前一個請求完成。 –
這與使您的方法異步無關。 –