Pergunta

I have got a method that i want only one user can access at a time. I really don't know how to do this.

public static int add(int a, int b)
{
 int c = a+b;
 return c;
}

and i am calling this method when a user enters data into two text boxes and click the submit button on a asp.net webpage. I don't want other users access to be denied. They should be kept in some sort of queue and when method is finished serving one user next user should be served.

Foi útil?

Solução

Msdn got good explanation, check documentation. Thread Synchronization

Since you have a static method, you need static Object for locking.

public class Calculator
{
    private static System.Object lockThis = new System.Object();

    public static void Add(int a, int b)
    {   
        lock (lockThis)
        {
            return a+b;
        }
    }

}

That lock means, that whenever a Thread accesses that method and it is not locked, it will lock it and run the code. If it is locked it will do nothing until it is unlocked.

Edit: Edited code for your method.

Outras dicas

you will need a static object, and use the keyword lock.

private static object locker = new object();
public static int add(int a, int b)
{
     lock(locker) 
     {
         //do stuff
     }
}

Assuming this method is within a singleton object you will then need to synchronize the method

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top