运行一些代码将文本添加到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();
}
答案 0 :(得分:2)
您可以使用sysinternal(现在是Microsoft的一部分)“进程资源管理器”来查找哪些进程打开了哪些文件:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
当你运行它时,点击“查找句柄”按钮(或从菜单中查找 - >查找句柄),然后输入“segments.new” - 它将显示任何打开该文件的进程。 / p>
答案 1 :(得分:1)