我正在使用File Watcher(.NET)并始终收到以下错误 - 另一个进程正在使用该文件。
上述错误仅出现在网络共享中,即监视目录是共享的,如果有人将文件放入该目录,则只会发生此错误。当我将文件从我的m / c放到监视目录(本地)时,它工作正常。
这是我的下面的代码看起来,错误来自第一行本身。我已经尝试过网上给出的所有解决方案,但似乎没有任何效果。当我放置Thread.Sleep(500)时,唯一的解决方案是有效的,但之后它无法选择下一个文件。任何建议都会有很大的帮助。
try
{
using (Stream stream = File.Open(xmlPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
XmlTextReader xmlTextReader = new XmlTextReader(stream);
document = XDocument.Load(xmlTextReader);
........ // my code
xmlTextReader.Close();
stream.Close();
}
}
catch (Exception exception)
{
EventLog.WriteEntry("Application", exception.ToString(), EventLogEntryType.Error);
}
答案 0 :(得分:1)
我认为您会发现该文件无法访问,因此等待的原因为何。
看看这段代码,看看这是否有帮助......
// Consider having a List<String> named _changedFiles
private void OnChanged(object source, FileSystemEventArgs e)
{
lock (_changedFiles)
{
if (_changedFiles.Contains(e.FullPath))
{
return;
}
}
// do your stuff
System.Timers.Timer timer = new Timer(1000) { AutoReset = false };
timer.Elapsed += (timerElapsedSender, timerElapsedArgs) =>
{
lock (_changedFiles)
{
_changedFiles.Remove(e.FullPath);
}
};
timer.Start();
}