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();
}
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top