Come faccio a sapere quali "processi" accedono al mio file Lucene.Net?
-
05-07-2019 - |
Domanda
Ricevo questa eccezione quando eseguo del codice per aggiungere testo a un indice Lucene.net:
Il processo non può accedere al file 'E: \ SomeProject \ SomeProject.Webroot \ App_Data \ Lucene \ segments.new' perché viene utilizzato da un altro processo.
Qual è il modo più semplice per scoprire qual è l '"altro processo"? (Sono in esecuzione su Win XP) Ecco un frammento di codice ridotto (l'eccezione viene generata dalla riga 'AddDocument' dopo oltre 50 iterazioni) nel caso in cui fosse di aiuto:
using l = Lucene.Net;
public void IndexText(List<TextToIndex> textToIndexList)
{
l.Analysis.Standard.StandardAnalyzer standardAnalyzer =
new l.Analysis.Standard.StandardAnalyzer();
l.Index.IndexWriter indexWriter =
new l.Index.IndexWriter(_LuceneIndexPath, standardAnalyzer, false);
foreach (TextToIndex textToIndex in textToIndexList)
{
l.Documents.Document luceneDoc =
CreateLuceneDoc(textToIndex.TypeId,
textToIndex.TextId,
textToIndex.Text,
textToIndex.Title,
textToIndex.ModifiedDate,
textToIndex.CultureCode);
indexWriter.AddDocument(luceneDoc);
}
indexWriter.Close();
}
Soluzione
Puoi utilizzare sysinternal (ora parte di Microsoft) " process explorer " per scoprire quali processi hanno quali file aprire:
http://technet.microsoft.com/en-us/sysinternals /bb896653.aspx
Quando lo esegui, fai clic su " trova la maniglia " pulsante (o dal menu find- > find handle), quindi inserisci " segmenti.nuovo " - ti mostrerà tutti i processi che hanno quel file aperto.
Altri suggerimenti
Prova " sblocco " http://www.emptyloop.com/unlocker/