2012-05-04 4 views
0

Я использую Static для хранения данных для кеширования. Это используется в службах окон.Обновление статических данных (кэширование) во время выполнения

Код моего кэширования ниже.

 
public class CacheLoader

{ private static Dictionary<string, string> _cache; private static Boolean _loaded = false; private static object _lockObject = new object(); private ILoader _loader; public CacheLoader(ILoader loaderObj) { _loader = loaderObj; } public Dictionary<string, string> Load() { lock (_lockObject) { if (!_loaded) { _cache = _loader.Load(); _loaded = true; } } return _cache; } public static void Clear() { lock (_lockObject) { _cache = null; _loaded = false; } } }

Мой вопрос: как обновить (перезагрузить) эти статические данные во время выполнения. Я не хочу использовать таймер, потому что кеш обновляется каждый раз, когда таймер истекает.

Я хочу, чтобы кеш обновлялся, когда это необходимо, так как он обновляется вручную без перезапуска службы окна.

Я думал об использовании концепции просмотра файлов, то есть отдельного потока, который следит за файлом, если обновленный кеш обновляется.

Верно ли это?

+0

Какие триггеры существуют для обновления кеша? – yamen

ответ

0

Предоставьте конечную точку WCF для вашей службы или используйте любой другой механизм IPC для связи с ним из вашего приложения (например, именованные каналы). Затем вы можете легко запустить обновление. Также смотрите article, где показано, как использовать обработчик OnCustomCommand для односторонней связи.