如何在c#中使一个方法一次只能被一个用户访问

本文关键字:一个 一次 访问 用户 方法 | 更新日期: 2023-09-27 18:03:10

我有一个方法,我想一次只有一个用户可以访问。我真不知道该怎么做。

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

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

如何在c#中使一个方法一次只能被一个用户访问

Msdn得到了很好的解释,检查文档。线程同步

由于您有一个静态方法,因此需要静态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意味着,每当一个线程访问该方法并且它没有被锁定时,它将锁定它并运行代码。如果它被锁定,它将不做任何事情,直到它被解锁。

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

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

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

假设这个方法在一个单例对象中,那么你需要同步这个方法