0

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

            }
4

1 回答 1

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 事件引发两次

于 2012-10-04T10:05:00.853 回答