我目前正在使用包装为 Hashtable 的 Hashtable。Synchronized 作为库中的简单缓存,可由多线程环境(例如 asp.net)使用 - 这是否适合用于此集合?我知道 .Net 4.0 中有更合适的结构可用,但我坚持使用 .Net 3.5。
如果有任何区别,则经常读取此缓存,并且很少写入(但需要保持线程安全)。
基本用法大致如下:
Private Shared ReadOnly ExpressionCache As Hashtable = Hashtable.Synchronized(New Hashtable())
..snip...
If Not ExpressionCache.ContainsKey(myKey) Then
ExpressionCache(myKey) = myExpensiveOperationToInit()
End If
Return ExpressionCache(myKey)
..snip..
我在这里做了一些潜在危险的事情,还是这是一个可以接受的用例?