0

キャッシング用のデータを保持するために Static を使用しています。これは、ウィンドウ サービスで使用されます。

私のキャッシングコードは以下です。

パブリック クラス 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 に答える