6

サードパーティ プログラムによって定期的に書き込まれているファイルを読み込んでいます。以下の FileStream を使用して読んでいます。

using (FileStream fs = new FileStream(
                         FullPath,
                         FileMode.Open,
                         FileAccess.Read,
                         FileShare.ReadWrite))

ただし、サードパーティのプログラムはファイルに書き込んでいますが、FileShare.None

そのため、サードパーティのプログラムが排他アクセスでファイルを開こうとして失敗したときに、ファイルを読み取り用に開いていることがあります。

サードパーティ プログラムに問題を起こさずにこのファイルを読み取るにはどうすればよいですか? 別のアプリケーションを優先するために、読み取りを解放してもかまいません。これを行う方法はありますか?

4

3 に答える 3

1

やりたいことは、プロセス作成の通知を監視することです。特定のプロセスが存在するのを確認したら、その邪魔にならないようにしたいと思うでしょう。

IWbemServices::ExecNotificationQuery

MSDNからの追加の詳細を次に示します。ここにも CodeProject があります: Process Information and Notifications using WMI

于 2013-08-17T22:09:27.293 に答える
1

このサード パーティのプロセス (.exe、Windows サービス、Web アプリなど) が停止した場合、そのときにファイルにアクセスできます。停止しない場合、またはいつ実行されるかがわからない場合は、これをコピーできます。サーバーの電源を入れるとすぐにファイルします。

これが有効かどうかは、アプリと他のアプリの性質、およびこのファイルを読み取る必要がある頻度によって異なります。

于 2013-08-17T22:59:03.657 に答える
1

私はまだ使用していませんが、System.IO.Filestream.Unlockメソッドを使用して、他のソフトウェアによって現在ロックされていないファイルの部分をストリーミングしようとしましたか? 他のソフトウェアがファイル全体をロックしていないと仮定します。

于 2014-01-04T23:33:21.560 に答える