如何找出“进程”访问我的Lucene.Net文件?

时间:2009-07-30 13:20:55

标签: c# exception lucene.net

运行一些代码将文本添加到Lucene.net索引时,我遇到了这个异常:

  

该进程无法访问该文件   'E:\ SomeProject \ SomeProject.Webroot \ App_Data文件\ Lucene的\ segments.new'   因为它被另一个人使用   过程

找出“其他流程”的最简单方法是什么? (我在Win XP上运行)这是一个精简的代码片段(在50多次迭代后,'AddDocument'行抛出异常)以防有任何帮助:

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

2 个答案:

答案 0 :(得分:2)

您可以使用sysinternal(现在是Microsoft的一部分)“进程资源管理器”来查找哪些进程打开了哪些文件:

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

当你运行它时,点击“查找句柄”按钮(或从菜单中查找 - >查找句柄),然后输入“segments.new” - 它将显示任何打开该文件的进程。 / p>

答案 1 :(得分:1)

尝试“解锁器”http://www.emptyloop.com/unlocker/