0

我的文件观察程序事件仅读取第一个文件,然后我收到以下错误:“错误:System.IO.IOException:进程无法访问文件 'D:\TREE\Dump\TF20141004011343313.txt',因为它正在被另一个过程。”

这是我的代码:

   int? msgID;
        string dup ="";
        try
        {
            //---------read from file------------

            string block;

            using (StreamReader sr = File.OpenText(MsgsPath + "\\" + e.Name))
            {
                block = sr.ReadToEnd();
            }

并且“使用”应该自动处理打开和关闭,对吗?然后,我使用此代码移动已处理的文件:

     File.Move(MsgsPath + "\\" + e.Name, MsgsPath + "\\Archive\\" + e.Name);
4

1 回答 1

-1

FileSystemWatcher Created只要其他进程打开文件进行写入,就会触发该事件。之后Changed,当其他进程写入文件并最终关闭文件时,将发生一个或多个事件。

解决该错误的最简单方法是在尝试访问该文件之前稍等片刻:

Thread.Sleep(500);

更高级的方法是从最后一个 Changed事件开始等待片刻。

于 2014-10-19T10:55:24.563 回答