如何生成通过FileStream写入的数据在磁盘上的通知?

时间:2013-05-09 15:48:05

标签: c# multithreading file-io filestream fileshare

我希望在收到通知后通过另一个线程向其写入一定数量的数据后读取文件。

我的尝试是在我的作者中创建一个反应主题在写入BinaryWriter之后调用OnNext的类。这个BinaryWriter使用FileStream。
但这似乎不起作用。我假设我不能保证写入已被刷新。

我宁愿不手动调用flush。有没有现成的方法呢?

1 个答案:

答案 0 :(得分:1)

在更广泛的层面上,您询问线程之间的通信。根据您的喜好和环境,有几种方法可以解决这个问题。

如果您还没有,请查看POSIX线程herehere。注意讨论条件变量或信号量的部分。

.NET框架有一个System Threading库,值得一看。特别是,它具有信号量和监视器类。在这种情况下,您可能需要一种或另一种解决方案。

最后,考虑InotifyPropertyChanged界面和/或事件。在这种情况下,它是向读者发出信号进展的另一条途径。

一般情况下,我建议让你的编写器线程在写入X字节后抛出事件更改通知或提高信号量。从那里,读者将捕获事件或观察信号量并采取相应行动。

我怀疑监视器类对你没用,因为锁定可能会阻止同时访问文件。