Ho una funzione di indicizzazione denominata "Execute()" che utilizza IndexWriter per indicizzare il contenuto del mio sito. Funziona alla grande se l'ho chiamato semplicemente da una pagina web, ma non è riuscito quando lo ho come parametro delegato in System.Threading.Thread. Stranamente però, funziona sempre sulla mia macchina dev locale, fallisce solo quando carico su un host condiviso.Issue.Net e problema di threading I/O
Questo è il messaggio di errore ho ottenuto
"Blocco ottenere scaduta: errore di SimpleFSLock ...."
Di seguito si riporta il codice fallito (ma non solo su un host condiviso)
Scheduler scheduler = new Scheduler();
System.Threading.Thread schedulerThread = new System.Threading.Thread(scheduler.Execute);
di seguito è il codice che funziona (il lavoro sia sulla mia macchina locale e su host condiviso)
Scheduler scheduler = new Scheduler();
schedulre.Execute();
Ora, alcuni ppl detto, potrebbe essere una cattiva lasciati dal precedente sessione di debug, quindi prima ho istanziati l'IndexWriter, ho fatto
if (IndexReader.IsLocked(indexingFolder))
{
log.Debug("it is locked");
IndexReader.Unlock(FSDirectory.GetDirectory(indexingFolder));
}
else
{
log.Debug("it is not locked");
}
e indovinate un po? il mio registro dice, non è bloccato.
Quindi ora sono abbastanza sicuro che sia causato dal System.Thread.Threading, ma non ho idea di come ripararlo.
Grazie
Ho aggiornato la mia risposta per incorporare ciò che hai chiesto nel tuo commento. –