我的文件观察程序事件只读取第一个文件然后我收到以下错误: “错误: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);
答案 0 :(得分:-1)
一旦其他进程打开文件进行写入,就会触发FileSystemWatcher
Created
事件。接下来,当其他进程写入文件时,将跟随一个或多个Changed
事件,最后将其关闭。
解决错误的最简单方法是在尝试访问文件之前等待一会儿:
Thread.Sleep(500);
更高级的方法是等待上一次 Changed
事件。