大家好!
我们最近在用C#开发Web的软件.
为了减少多次存取Session中的数据
有人定义了static 变量,但我发现这不可取,
当多用户操作,比如同时访问同一画面,
两个用户会共同操作这个静态变量,
所以画面会出错.WebServer (IIS)大家怎么看?是不是有这个问题

解决方案 »

  1.   

    因为static是定义的静态变量,可以实现全局变量的功能,故.....
      

  2.   

    static是类级变量,也就是说他属于类而不属于某一个对象,在ASP.NET中,当一个请求到达时,将会产生一个Page类的实例,但是如果在Page里面有Static的变量这样大家将公用这个变量,这样做可能导致并发的问题,后保存的将会覆盖先保存的结果。建议如果和用户相关的变量不要放在static的变量里。你也可以使用lock来保护static的变量!
      

  3.   

    有static修饰的类或类中的变量,当类在内存中产生实例时,它在内存的公共区域中存储,所有类的实例都公用这块区域存储这个static修饰的类或变量,所以才有它很像全局变量。
      

  4.   

    对于每个用户的数据是要保存到Session中的,不能保存到Static变量中。
      

  5.   

    用session不好吗,一般都是用这个的啊
      

  6.   

    兄弟,我第一次开发时,也遇到了同样的问题。
    在B/S结构中,尽量不要用STATIC的变量,C/S可以考虑。
    如果要传递变量,用SESSION,隐藏字段,CACHE等。
      

  7.   

    这种情况可以考虑用singleton设计模式,再用上lock,应该就没什么问题了,最近也在学习中
      

  8.   

    private static string A = "..."; // 你要用的变量
    private static Object m_Locker = "并发锁对象";lock(m_Locker)
    {
        ...
        A = "***";  // 对A的操作
        ...
    }
      

  9.   

    lock 内的内容要尽量的少,非必要的操作尽量放到lock外面操作。快取快放!
      

  10.   

    在Web开发中要尽量避免static变量,还是用其它方法好,楼上说得很详细了