我想在“操作”中使用异步,但当我同时访问带有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始终等待。直到前一个请求完成。 –
这与使您的方法异步无关。 –