現在、HashtableとしてラップされたHashtableを使用しています。マルチスレッド環境(asp.netなど)で使用できるライブラリ内の単純なキャッシュとして同期されています。これは、このコレクションに適した使用法ですか?.Net 4.0で利用できるより適切な構成があることは理解していますが、.Net3.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..
私はここで潜在的に危険なことをしていますか、それともこれは許容できるユースケースですか?