У меня есть функция индексирования с именем «Execute ()», использующая IndexWriter для индексации содержимого моего сайта. Это прекрасно работает, если я просто вызвал его с веб-страницы, но не получилось, если у меня есть его в качестве параметра делегата в System.Threading.Thread. Странно, однако, что он всегда работает на моей локальной машине разработчика, он не работает, только когда я загружаю на общий хост.
Это сообщение об ошибке, которое я получил
"Превышено время ожидания блокировки: ошибка SimpleFSLock ...."
Ниже приведен код ошибки (но происходит только на общем хосте)
Scheduler scheduler = new Scheduler();
System.Threading.Thread schedulerThread = new System.Threading.Thread(scheduler.Execute);
Ниже приведен код, который работает (работает как на моей локальной машине, так и на общем хосте)
Scheduler scheduler = new Scheduler();
schedulre.Execute();
Теперь, некоторые люди сказали, что это может быть плохо от предыдущего сеанса отладки, поэтому, прежде чем я создал экземпляр IndexWriter, я сделал
if (IndexReader.IsLocked(indexingFolder))
{
log.Debug("it is locked");
IndexReader.Unlock(FSDirectory.GetDirectory(indexingFolder));
}
else
{
log.Debug("it is not locked");
}
и угадайте что? Мой журнал говорит, что он не заблокирован.
Так что теперь я почти уверен, что это вызвано System.Thread.Threading, но я просто понятия не имею, как это исправить.
Спасибо