如何在c#中一次访问一个用户的方法

时间:2014-05-13 12:00:36

标签: c# asp.net singleton msmq

我有一个方法,我希望一次只能有一个用户访问。我真的不知道该怎么做。

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

当用户将数据输入两个文本框并单击asp.net网页上的提交按钮时,我正在调用此方法。 我不希望其他用户访问被拒绝。它们应该保存在某种队列中,当方法完成后,一个用户应该为下一个用户提供服务。

3 个答案:

答案 0 :(得分:2)

Msdn得到了很好的解释,检查文档。 Thread Synchronization

由于您有静态方法,因此需要静态Object来锁定。

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

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

}

lock表示每当线程访问该方法并且未锁定时,它将锁定它并运行代码。如果它被锁定,它将无法解锁。

编辑: 为您的方法编辑代码。

答案 1 :(得分:0)

假设此方法在单个对象中,则需要synchronize the method

答案 2 :(得分:0)

您将需要一个静态对象,并使用关键字lock。

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