2010-02-05 39 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狀態。