多用户访问,static变量并发问题!!!!!!!!!!!

时间:2022-08-29 11:44:32
很多用户(不同机器)同时访问同一个页面,因为那个页面功能复杂用到了静态变量,不论变量是pulic还是private,用户之间会出现串值问题。我也在网上搜了下,有这种情况,但没有找到解决办法。有的说可以对静态变量加锁,不知道怎么个加?
请各位讨论下解决方法。。


向各位致敬了!!!!!

18 个解决方案

#1


up

#2


你怕出现串值就不要用静态变量.如果每个用户用的变量值都不一样,那么就失去了用静态变量的意义.
如果值重要就用session,不重要就用cookie.效果和你想要的是一样的.session也没有大小限制也是存在内存里的

#3


学习了

#4


using System.Threading;
public static string s_var = "abc";
/*开始锁*/
Monitor.Enter(s_var);
/*执行你的过程*/
...

/*退出锁*/
Monitor.Exit(s_var);

#5


页面功能复杂用到了静态变量,这个逻辑太那个了吧

#6


学习

#7


学习了   呵呵呵 有意愿的加 c#&asp.net群 共同学习 啊63242231 谢谢

#8


引用 2 楼 lihongdian 的回复:
你怕出现串值就不要用静态变量.如果每个用户用的变量值都不一样,那么就失去了用静态变量的意义. 
如果值重要就用session,不重要就用cookie.效果和你想要的是一样的.session也没有大小限制也是存在内存里的

难道使用静态变量是为了多用户一个值吗?老大 你真牛比!!!

#9


up

#10


我也遇到过

如果信息是公用的可以使用静态变量(pagesize)。

如果要区分用户的话,又不是敏感信息就用cookie。

如果要区分用户并且是敏感信息用session。

#11


web不可以共用静态变量的

#12


顶你!

#13


    class Program
    {
        public static string str = "dsdsdsdsd";
        static void Main(string[] args)
        {
            lock (str )
            {
                str = "ddddddddddd";
            }
            Console.WriteLine(str.ToString());
            Console.ReadLine();
        }
    }
里面有锁的方法,不知道是不是你要的

#14


ding

#15


学习

#16


private System.Object lockThis = new System.Object();

lock(lockThis)
{
 静态变量操作
}

#17


lock 锁静态变量是没用的 或者不符合逻辑!!
lock 不适用于此!

#18


  Application.Lock();
        {
            .......................
        }
        Application.UnLock();

#1


up

#2


你怕出现串值就不要用静态变量.如果每个用户用的变量值都不一样,那么就失去了用静态变量的意义.
如果值重要就用session,不重要就用cookie.效果和你想要的是一样的.session也没有大小限制也是存在内存里的

#3


学习了

#4


using System.Threading;
public static string s_var = "abc";
/*开始锁*/
Monitor.Enter(s_var);
/*执行你的过程*/
...

/*退出锁*/
Monitor.Exit(s_var);

#5


页面功能复杂用到了静态变量,这个逻辑太那个了吧

#6


学习

#7


学习了   呵呵呵 有意愿的加 c#&asp.net群 共同学习 啊63242231 谢谢

#8


引用 2 楼 lihongdian 的回复:
你怕出现串值就不要用静态变量.如果每个用户用的变量值都不一样,那么就失去了用静态变量的意义. 
如果值重要就用session,不重要就用cookie.效果和你想要的是一样的.session也没有大小限制也是存在内存里的

难道使用静态变量是为了多用户一个值吗?老大 你真牛比!!!

#9


up

#10


我也遇到过

如果信息是公用的可以使用静态变量(pagesize)。

如果要区分用户的话,又不是敏感信息就用cookie。

如果要区分用户并且是敏感信息用session。

#11


web不可以共用静态变量的

#12


顶你!

#13


    class Program
    {
        public static string str = "dsdsdsdsd";
        static void Main(string[] args)
        {
            lock (str )
            {
                str = "ddddddddddd";
            }
            Console.WriteLine(str.ToString());
            Console.ReadLine();
        }
    }
里面有锁的方法,不知道是不是你要的

#14


ding

#15


学习

#16


private System.Object lockThis = new System.Object();

lock(lockThis)
{
 静态变量操作
}

#17


lock 锁静态变量是没用的 或者不符合逻辑!!
lock 不适用于此!

#18


  Application.Lock();
        {
            .......................
        }
        Application.UnLock();