我的一个Asp.net(c#)程序中,为了性能考虑,我在数据访问层中把常用的数据表存放在一个公共静态变量中,如下: 
public static class DALGlobal

        public static DataSet GlobalDs; 
        public static DateTime LastUpdated; 
 ...
}   但由于客户端的并发请求问题,程序就相当于在多线程环境下运行了。这样,如何来保证以上两个静态变量的线程安全性呢? 
 
我的数据访问层是一个静态类,其中全是静态方法。这种静态方法中,就有类似下面这样的代码:
... 
GlobalDs.Tables["AAA"].Rows[i][j] = value; 
... 
LastUpdated = DateTime.Now(); 
... 我在网上问了下,有人回复说这样来处理:
定义一个静态的对象 static object lockObj 用来加锁 
lock(lockObj) 

... 
}
 
但我不明白为什么是另外定义一个对象来加锁,而不是直接给我要操作的静态变量加锁呢?我的静态类不存在实例化的问题,也要这样处理吗?