2016-12-20 35 views
0

我想了解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); 
    } 
} 
+0

您是否有其他选项卡打开到同一主机(本地主机)(在您运行这些测试时)? – sellotape

+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

+2

您应该编辑您的问题以添加该问题,而不是将其作为答案发布。 – sellotape

相关问题