繁体   English   中英

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

[英]How can I generate notifications that data written via a FileStream is on the disk?

在收到通知已通过另一个线程写入一定数量的数据后,我想读取一个文件。

我的尝试是在我的Writer类中创建一个Reactive Subject,它在写入由它组成的BinaryWriter之后调用OnNext。 这个BinaryWriter使用FileStream。
这似乎不起作用。 我假设我不能保证Write已被刷新。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM