为什么我的操作方法同步运行?

时间:2016-12-20 07:29:52

标签: c# asp.net-mvc asp.net-mvc-4 asynchronous async-await

我试图了解ASP.NET MVC中的异步方法。然后我创建了简单的控制器,在我看来应该异步工作。 但是,当我同时在3个标签中运行/动作时,我会在15秒,30秒和45秒后得到答复。不应该是,比如15,17,19秒?

public class HomeController : Controller
{
    public async Task<ActionResult> Index()
    {
        await AsynchMethod();
        return View();
    }

    public async Task<ActionResult> About()
    {
        ViewBag.Message = "Your application description page.";
        await AsynchMethod();
        return View();
    }

    public async Task<ActionResult> Contact()
    {
        ViewBag.Message = "Your contact page.";
        await AsynchMethod();
        return View();
    }

    private Task AsynchMethod()
    {
        return Task.Delay(15000);
    }
}

1 个答案:

答案 0 :(得分:0)

在代码和其他测试发生细微变化后,我注意到我的手表观察结果不够准确:

    public async Task<ActionResult> Index()
    {
        ViewBag.Title = DateTime.Now.ToLongTimeString();
        await AsynchMethod();
        ViewBag.Title += "  -  " + DateTime.Now.ToLongTimeString();
        return View();
    }

第一个和第二个请求看起来像是同步调用,但第三个请求看起来不是:

enter image description here