6

別のスレッドを介して一定量のデータが書き込まれたことを通知された後、ファイルを読み取りたいと考えています。

私の最初の試みは、構成されている BinaryWriter への書き込みの後に OnNext を呼び出す Writer クラスに Reactive Subject を作成することでした。この BinaryWriter は FileStream を使用します。
しかし、これはうまくいかないようです。書き込みがフラッシュされたことが保証されていないと仮定しています。

手動でフラッシュを呼び出したくありません。これを行う既存の方法はありますか?

4

1 に答える 1

1

より広いレベルでは、スレッド間の通信について質問しています。好みや環境に応じて、これを処理する方法がいくつかあります。

まだ読んでいない場合は、ここここでPOSIX スレッドを調べてください。条件変数またはセマフォについて説明しているセクションに注意してください。

.NET フレームワークには、検討する価値のあるシステム スレッドライブラリがあります。特に、セマフォとモニター クラスの両方を備えています。この場合、どちらかが必要なソリューションになる可能性があります。

最後に、InotifyPropertyChangedインターフェイスおよび / またはイベントを検討します。このコンテキストでは、これはリーダーから進行状況を通知するための代替ルートです。

一般に、X バイトを書き込んだ後、ライター スレッドでイベント変更通知をスローするか、セマフォを発生させることをお勧めします。そこから、リーダーはイベントをキャッチするか、セマフォを監視してそれに応じて行動します。

ロックによってファイルへの同時アクセスが妨げられる可能性があるため、モニタークラスはそれほど役に立たないと思います。

于 2013-05-14T13:12:27.930 に答える