//定义一个类,包含一个静态变量Count
public class Static_
{
public static int Count;
}
第一个用户存储Count值,第二个用户也存储Count值,那么,当第一个用户存储Count=1时,第二个用户存储Count=2,这时第一个用户如果取Count值,就发生了变化,有什么办法可以解决他们存储的值是各自的,是否要用到线程或并发的知识?
public class Static_
{
public static int Count;
}
第一个用户存储Count值,第二个用户也存储Count值,那么,当第一个用户存储Count=1时,第二个用户存储Count=2,这时第一个用户如果取Count值,就发生了变化,有什么办法可以解决他们存储的值是各自的,是否要用到线程或并发的知识?
{
public int Count;
}第一个用户
Static_ User1 = new Static_();
Static_ User2 = new Static_();
一般这种情况就用mutex 来处理吧。保证读写操作的原子性。//创建一个 static 的mutex
bool requestInitialOwnership = true;
bool mutexWasCreated; Mutex m = new Mutex(requestInitialOwnership,
"MyMutex",
out mutexWasCreated);public static int GetAndSetCount(int newCount)
{
m.WaitOne();
if(newCount < 0) return Count; //only read the value
else
{
int oldValue = Count;
Count = newValue;
return oldValue;
}
m.ReleaseMutex();
}无论对哪个user 要访问 Count 值都应该通过这个方法,这样就能保证读写操作的
原子性。
我做的是Asp.Net的,具体是这样的:
左边一个树菜单,右边是一个内容显示,
当我选择左边的树菜单时,右边显示左边菜单项的编号
我在一个类里面保存这个编号为Static的,
当我运行2个次软件时,当第一个用户点树菜单的项时,第二个用户取出的值是第一个用户点取的值,而不是自己选择的,就是这个变量是全局的,我想让他们各自存储自己的选择的菜单项的值