我正在设置一个托管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);
}
...
}
由于该对象缓存了它正在搜索的索引,因此我需要以与任何客户端调用异步的间隔重新初始化该对象......就像每分钟左右一样。因此,我尝试在我的天蓝色实例上的另一个线程中设置一个运行该进程的进程...
LuceneHelper.initSearcher();
while (true)
{
Thread.Sleep(60000);
LuceneHelper.initSearcher();
}
从我的测试中我可以看出它们都在工作,但彼此独立。所以我猜我的网络服务中有一个 IndexSearcher,我的工作线程中有一个。
我的问题:有没有办法在我的 web 服务中异步运行我的无限“while”语句,或者以任何其他方式在没有客户端调用的情况下重新初始化对象?