辞書クラスを使用して単純なキャッシュを実装しました。
private Dictionary<int, byte[]> cache = new Dictionary<int, byte>();
public void SetPicture(int id, byte[] bytes)
{
cache[id] = bytes;
}
public byte[] GetPicture(int id)
{
if (cache.Contains(id)) {
return cache[id];
}
return null;
}
SetPicture は、単一のバックグラウンド スレッドからのみ呼び出されます。(このバックグラウンド スレッドは、Active Directory クエリからユーザー プロファイルの写真を更新しています)。
GetPicture は、他の複数のスレッド (http 要求を処理するスレッド) から呼び出されます。
アイテムがキャッシュから削除されることはありません。
このコードはスレッドセーフですか? または、SetPicture で書き込み中に内部 Dictionary へのアクセスをブロックする必要がありますか?