タブ区切りのレコードを CSV ファイルに一貫して書き込むラボ機器があり、そのデータを使用するアプリを作成する任務を負っています。その部分は簡単です。ただし、これに加えて、データバインディングを使用してWPFアプリを介してこのファイルを「リアルタイム」で「監視」する方法を見つけることも任されています。これをより簡単な作業にするために、2 つの利点があります。
CSV に書き込まれるレコードは、8 秒間隔で発生します。
CSV を監視する必要がある合計期間中、ファイル自体が 100 MB を超えることはほとんどありません。私が見たファイルのほとんどは 20 ~ 30 MB です。
私の質問
ファイルを開き、そのコンテンツの「一定の」読み取りまたは監視を維持する方法はありますか、または従来のファイル IO ポーリングを使用してこれを行う必要がありますか?
この問題を解決しようとする私の思考プロセス
修辞的に、私は「この CSV はデータベースとどう違うのですか?」と考えました。しかし、さらなる調査により、EF は CSV を直接操作できないことが明らかになりました。Entity Framework の DbContext をデータ バインディングと共に使用して、プロパティの変更を報告できる場合、CSV の変更を監視するために同様の設定を行うことはできますか? しかし、私が精神的にどの道をたどっても、解決策は常に「ポーリング」に戻ります。たとえば、Linq を使用して CSV を定期的にヒットし、結果をプロパティに返すことができます。プロパティの値が変更された場合 (CSV に何かが追加された場合)、データバインディングはそれを認識し、アプリはそれに応じて動作します。ええ、それはポーリングのように聞こえます。
結論は
WPF/databinding または EF (可能であれば)、または私が考えていない、またはここで言及していない .NET クラスを利用して、質問に答えたり、問題を解決したりするより簡単なソリューションがある場合は、それについて聞いてみたいと思います。