FileSystemWatcher文件访问错误

时间:2012-10-04 09:56:05

标签: c# .net service file-io

我正在使用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);

            }

1 个答案:

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

自: FileSystemWatcher Changed event is raised twice