2010-02-05 36 views
2

我使用followign对象在我的asp.net页面使用asp.net中静态对象的

private static Dictionary<string, List<Guid>> OpenNodes = new Dictionary<string, List<Guid>>(); 
//Page start 
if(!OpenNodes.ContainsKey(Session.SessionID)) 
{ 
    List<Guid> list = new List<Guid>(); 
    OpenNodes.Add(Session.SessionID, list); 
} 

//User clicked on a node 
Guid id = new Guid(e.Node.Value); 
tmpList = OpenNodes[Session.SessionID]; 
tmpList.Add(id); 
OpenNodes[Session.SessionID] = tmpList; 

是它。一个好的实践的研究还是有一个类似的“好”的方式来达到同样的?

+0

我想念锁......无论是锁(/ ** /)'或'ReaderWriterLockSlim' - 使用 – 2010-02-05 10:19:07

回答

7

您不应该用静态字段替换SessionSession更灵活,更不容易出错。你可以很容易地使它在Web农场中工作(你不能用静态字段来实现)。您可以考虑用静态字段替换一些Application变量。了解静态字段不提供任何线程安全机制是非常重要的,您应该适当地手动控制(锁定)它们。

4

Web服务器是多线程的。您需要同步访问共享/静态对象

3

在这种情况下,您可以使用会话状态。我没有看到亲们在使用你在这里提出的模式。

如果你真的需要模仿一些静态字段。你应该使用Application状态。