我想写一个方法,以达到以下目的:1,通过此方法,用户随机获取一个随机整数  
   private string GetCode()
    {
                    Random random = new Random();
                    str = random.Next(10000).ToString();
                    return str;
    }
  2.当所有用户同时访问此方法获取随机整数时,同一时间只能有一人在获取: 一个用户正在获取,另一个用户就不能获取,直到第一个用户获取完毕后,才让第二个用户获取 就是用一个单线程将此方法锁定  不知应该如何写? 

解决方案 »

  1.   

    既然是单线程,就没有必要锁定。另外你的程序也不需要锁定,因为用的都是成员函数。.NET成员函数基本上实例之间是线程安全的。
      

  2.   


    这样写是否可以?
       lock (thisLock)
                {
                    if (str == "")
                    {
                        Random random = new Random();
                        str = random.Next(10000).ToString();
                        return str;
                    }
                }
      

  3.   

    公共变量:public Object thisLock = new Object();
      

  4.   

    lock (this)
    {
        ...
    }但是你的代码没有必要这么做。
      

  5.   


    Random random = new Random();// 类成员变量
    private string GetCode()
        {
                        lock(random)
                        {
                        str = random.Next(10000).ToString();
                        return str;
                        }
        }
    这样做等待。然后你这个对象做成单例的就好了。
      

  6.   

    我之所以这样提问
    是因为我目前所做的这个项目中有这样一个方法GetCode(参数...)
    GetCode方法内调用的是其它公司的接口IGetCode此接口根据我传入的参数 返回给我一个6位整数code当我在短时间内重复不间段的调用此接口时,发现此接口会返回给我两相同的code所以我就想到一个解决方案:在我这边方法内在调用接口时,将线程锁死
    在别人接口未返回给我code前,其他人不能再调用此接口获取code不知该如何实现?
      

  7.   

    str = random.Next(10000).ToString();