我有一个方法,我希望一次只能有一个用户访问。我真的不知道该怎么做。
public static int add(int a, int b)
{
int c = a+b;
return c;
}
当用户将数据输入两个文本框并单击asp.net网页上的提交按钮时,我正在调用此方法。 我不希望其他用户访问被拒绝。它们应该保存在某种队列中,当方法完成后,一个用户应该为下一个用户提供服务。
答案 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
}
}