静态数据(缓存)在运行时刷新

时间:2012-05-04 06:13:57

标签: .net static runtime refresh

我使用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; } } }

我的问题是,如何在运行时刷新(重新加载)此静态数据。我不想使用计时器,因为每次计时器到期时都会刷新缓存。

我希望在需要时刷新缓存,使其在不重新启动窗口服务的情况下手动刷新。

我想过使用文件观看概念,即一个监视文件的单独线程,如果刷新了更改的缓存。

这是对的吗?

1 个答案:

答案 0 :(得分:0)

为您的服务提供WCF端点,或使用任何其他IPC机制与您的应用程序(例如,命名管道)进行通信。然后,您可以轻松触发刷新。另请参阅此处的article,其中显示了如何使用OnCustomCommand处理程序进行单向通信。