2009-07-30 5 views
0

Ich bekomme diese Ausnahme, wenn einige Code ausgeführt wird Text in ein Lucene.net Index hinzuzufügen:Wie finde ich heraus, welche "Prozesse" auf meine Lucene.Net-Datei zugreifen?

Der Prozess kann nicht die Datei ‚E zuzugreifen: \ SomeProject \ SomeProject.Webroot \ App_Data \ Lucene \ Segmente .new ' , weil es von einem anderen Prozess verwendet wird.

Was ist der einfachste Weg herauszufinden, was der "andere Prozess" ist? (Ich laufe auf Win XP) Hier ist ein abgespeckte Code-Fragment (die Ausnahme von der Zeile ‚AddDocument‘ geworfen wird nach 50+ Iterationen) in dem Fall, dass jede Hilfe ist:

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(); 
} 

Antwort

2

Sie können SysInternals (jetzt Teil von Microsoft) „Process Explorer“ verwenden, um herauszufinden, welche Prozesse haben, was offene Dateien:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Wenn Sie es starten, klicken Sie auf die Schaltfläche „finden Griff“ Taste (oder aus dem Menü finden -> find handle), dann geben Sie "segments.new" ein - es zeigt Ihnen alle Prozesse, die diese Datei geöffnet haben.