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