sasan khayyambashi
sasan khayyambashi

Reputation: 21

Static methods in asp.net mvc

using asp.net mvc 4,

I created a class with a static method like this

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;
    }        
}

it is called from my controller :

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

I expected that when i call the method with a parameter value of 101 the application should be blocked for 30 secs, but it remains responsive. I thought since this is a static method it should be blocked for 30 second for all incoming method calls. can someone explain what happens here?

Upvotes: 2

Views: 1725

Answers (1)

Igor
Igor

Reputation: 15893

The thread handling the request to the Index action with id=101 of your controller should be blocked. Threads handling other requests of other sessions will not be blocked. Even other requests for the same session may not be blocked depending on ReadOnly session attribute of corresponding controllers [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)].

Upvotes: 1

Related Questions