数据写入流时的事件?

时间:2012-02-05 20:22:55

标签: c# events filestream

我正在尝试创建一个程序,只要将新数据写入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();
    }

}

正如您所看到的,所有这个类都要等到流的长度大于其当前位置。它似乎工作,但是,我一直想知道是否有更好的方法来做到这一点。所以我的问题是:

是否有更好的方法可以执行上面发布的代码剪辑中的操作?

2 个答案:

答案 0 :(得分:5)

您可能需要查看FileSystemWatcher,看看这对您来说是否是更好的解决方案。忙碌的等待通常不是一个好的解决方案。

答案 1 :(得分:2)

在这种情况下,我认为您不应该将文件保持在“打开”状态,因为另一个程序无法将数据写入文件。

尝试使用FileSystemWatcher class来接收有关文件更改的通知(example)。