Lucene.Net / AzureDirectory検索エンジン をホストする WCF Web サービスをセットアップしています。
速度を上げるために、すべてのサービス呼び出しで使用できるAzureDirectory
シングルトンインスタンスを使用することをお勧めします。IndexSearcher
これが私がしなければならないことです:
public class LuceneHelper
{
private static IndexSearcher _searcher;
public static IndexSearcher searcher
{
get
{
if (_searcher == null)
initSearcher();
return _searcher;
}
}
public static void initSearcher()
{
_searcher = new IndexSearcher(azureDirectory);
}
...
}
そのオブジェクトは検索しているインデックスをキャッシュするため、クライアント呼び出しとは非同期に一定間隔でそのオブジェクトを再初期化する必要があります...毎分などです。そこで、これを行う Azure インスタンスの別のスレッドで実行されるプロセスをセットアップしようとしました...
LuceneHelper.initSearcher();
while (true)
{
Thread.Sleep(60000);
LuceneHelper.initSearcher();
}
私のテストから、どちらも機能していますが、互いに独立していることがわかります。したがって、Web サービスに IndexSearcher があり、ワーカー スレッドに 1 つあると思います。
私の質問: Web サービスで無限の「while」ステートメントを非同期に実行する方法や、クライアントからの呼び出しなしでオブジェクトを再初期化する方法はありますか?