asp.net mvc中的静态方法

时间:2013-10-09 21:16:16

标签: asp.net-mvc static-methods

使用asp.net mvc 4,

我用这样的静态方法创建了一个类

public  class StaticClass
{
    public static int val { get; set; }

    public static string ReturnValueBasedOnInput(int n)
    {
        string res;
        switch (n)
        {
            case 101:
                Thread.Sleep(30000);
                res = "Long lasting response: 101" + val;
                break;
            default:
                res = n.ToString() + " was provided..." + val;
                break;               
        }

        return res;
    }        
}

从我的控制器调用它:

    public ActionResult Index(int id = 1)
    {            
        ViewBag.returnValue = StaticClass.ReturnValueBasedOnInput(id);
        return View(id);
    }

我预计当我调用参数值为101的方法时,应用程序应该被阻止30秒,但它仍然保持响应。我认为,因为这是一个静态方法,所以传入的方法调用应该被阻止30秒。谁能解释一下这里发生了什么?

1 个答案:

答案 0 :(得分:1)

应该阻止使用控制器Index处理id=101操作请求的线程。处理其他会话的其他请求的线程不会被阻止。根据相应控制器ReadOnly的{​​{1}}会话属性,甚至可能无法阻止对同一会话的其他请求。