2

進行状況やその他のデータを XML ファイルに記録するプログラムがあります。ライター プログラム (.NET プログラムではなく、私はそれを制御することはできません) をブロックせずにこの XML ファイルを開き、すべての処理が完了するのを待って、XML をそのまま読み取れるようにしたいと考えています。 EOF が受信されるまで。

これはC#でどのように達成できますか?

2 つの問題があることに注意してください。

  1. 他のプロセスをブロックせずに読み取りストリームを開いたままにします。
  2. 追加の入力がある場合は把握し、ない場合は待機します。
4

3 に答える 3

3

これを行う必要がある場合は、次のようなことを行います。

FileSystemWatcherを使用して、ファイルが変更されたときに通知を受け取ります。次に、ファイルを読み取り、必要に応じて XML を解析します。

外部アプリケーションがファイルに書き込むときにストリームを読み取るのが難しいため、このルートをたどります。

于 2012-11-13T14:54:30.093 に答える
1

次のフラグを渡すことにより、ファイルストリームをロックせずに開くことができます。

new FileStream(logFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

「EOF」を待つ限り、他のプログラムが断続的にデータを書き込んでいるだけの場合は、何らかのヒューリスティックを進行状況に入れる必要があります(つまり、X分間何も新しいものがない場合にのみ、新しいデータのピークを停止します)。

于 2012-11-13T14:54:26.600 に答える
1

TailfというOSプログラムで、過去に同様のことを行いました。自分でやりたい場合はコードをチェックするか、コードからすべてを取得してください。テキストファイルだけを気にするという事実の一部は、ほとんどあなたのためにも機能するはずです.

于 2012-11-13T14:52:18.350 に答える