【问题标题】:File access error with FileSystemWatcher when read file using windows service [duplicate]使用 Windows 服务读取文件时 FileSystemWatcher 的文件访问错误 [重复]
【发布时间】:2016-08-08 09:02:22
【问题描述】:

我有类似的issue。但我正在使用 Windows 服务从特定目录读取文件。有可能多个文件同时出现或一个接一个出现。问题是当我放置它读取的文件时,但是当我放置另一个文件时,它会引发文件访问异常。请帮忙。谢谢。

代码如下:

private static void OnCreated(object source, FileSystemEventArgs e)
    {
        try
        {
            var data = new FileData();
            data.ReadFile(e.FullPath);

        }
        catch (Exception ex)
        {
            WriteLogForError(ex.Message, String.Empty, ErrorLogPath);
        }
    }

【问题讨论】:

  • 显示你的代码..同样,只是因为创建了一个文件,并不意味着它还没有被写入..取决于文件的大小。
  • 您无法控制文件系统或其他进程(例如文件的来源,如 bugfinder 所说,或防病毒等)。很好,您唯一的选择是应对文件无法读取并休眠/循环,直到您能够以您想要的模式打开文件并且它拥有您的完整内容'希望。
  • @Damien_The_Unbeliever 你能给我一个示例代码吗?
  • 副本准确地解释了问题并显示了解决方法。

标签: c# file windows-services filesystemwatcher


【解决方案1】:

您尝试在文件创建时访问它。创建文件的其他进程可能仍在写入文件,因此您不能触摸它。

解决方案很尴尬:将文件名放入某个列表/队列中,启动一个计时器,然后在几秒钟后尝试读取它(不要忘记尝试...抓住这里并在失败时重试,没有直接通知其他进程已完成工作)。

【讨论】:

  • 我正在尝试 Thread.Sleep();在写入文件时等待。如果我成功了,我会用代码发布答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2010-10-16
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多