我正在尝试创建一个程序,只要将新数据写入FileStream对象就会调用操作。我目前的做法如下:
public class BlockingFileStream : FileStream
{
public override int Read(byte[] array, int offset, int count)
{
while (Position == Length) ;
return base.Read(array, offset, count);
}
public override int ReadByte()
{
while (Position == Length) ;
return base.ReadByte();
}
}
正如您所看到的,所有这个类都要等到流的长度大于其当前位置。它似乎工作,但是,我一直想知道是否有更好的方法来做到这一点。所以我的问题是:
是否有更好的方法可以执行上面发布的代码剪辑中的操作?
答案 0 :(得分:5)
您可能需要查看FileSystemWatcher,看看这对您来说是否是更好的解决方案。忙碌的等待通常不是一个好的解决方案。
答案 1 :(得分:2)
在这种情况下,我认为您不应该将文件保持在“打开”状态,因为另一个程序无法将数据写入文件。
尝试使用FileSystemWatcher class来接收有关文件更改的通知(example)。