0

我正在使用静态来保存数据以进行缓存。这用于窗口服务。

我的缓存代码如下。

公共类 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; } } }

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

我希望在需要时刷新缓存,例如手动刷新而不重新启动窗口服务。

我想到了使用文件监视概念,即,如果刷新更改的缓存,则监视文件的单独线程。

那是对的吗?

4

1 回答 1

0

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

于 2012-05-04T06:41:58.403 回答