我想写一个方法,以达到以下目的:1,通过此方法,用户随机获取一个随机整数
private string GetCode()
{
Random random = new Random();
str = random.Next(10000).ToString();
return str;
}
2.当所有用户同时访问此方法获取随机整数时,同一时间只能有一人在获取: 一个用户正在获取,另一个用户就不能获取,直到第一个用户获取完毕后,才让第二个用户获取 就是用一个单线程将此方法锁定 不知应该如何写?
private string GetCode()
{
Random random = new Random();
str = random.Next(10000).ToString();
return str;
}
2.当所有用户同时访问此方法获取随机整数时,同一时间只能有一人在获取: 一个用户正在获取,另一个用户就不能获取,直到第一个用户获取完毕后,才让第二个用户获取 就是用一个单线程将此方法锁定 不知应该如何写?
这样写是否可以?
lock (thisLock)
{
if (str == "")
{
Random random = new Random();
str = random.Next(10000).ToString();
return str;
}
}
{
...
}但是你的代码没有必要这么做。
Random random = new Random();// 类成员变量
private string GetCode()
{
lock(random)
{
str = random.Next(10000).ToString();
return str;
}
}
这样做等待。然后你这个对象做成单例的就好了。
是因为我目前所做的这个项目中有这样一个方法GetCode(参数...)
GetCode方法内调用的是其它公司的接口IGetCode此接口根据我传入的参数 返回给我一个6位整数code当我在短时间内重复不间段的调用此接口时,发现此接口会返回给我两相同的code所以我就想到一个解决方案:在我这边方法内在调用接口时,将线程锁死
在别人接口未返回给我code前,其他人不能再调用此接口获取code不知该如何实现?