Это можно сделать с помощью оператора блокировки в C #.
Вам нужна переменная объекта, которая используется как «блокировка», поэтому только один поток может получить к ней доступ одновременно.
Установить блокировку вокруг кода, который обновляет или извлекает объект кэша.
Вот простой класс, который демонстрирует это:
public class UpdateCache
{
private static object _myLockObject;
public static void UpdateCache()
{
lock(_myLockObject)
{
.. Update cache object
}
}
public static void LoadFromCache(string key)
{
lock(_myLockObject)
{
.. retrieve data from cache
}
}
}