これを行う方法を理解するのにかなりの時間を費やしましたが、有用な解決策は見つかりませんでした。
これが私がやりたいことです。アプリケーションで巨大なバイナリ ファイルを生成しています。注意が必要なのは、このプロセスでは FileStream を時々閉じる必要があることです。問題は、他のアプリケーション (私のウイルス スキャナなど) が、ファイルがロックされていないこの短い瞬間を利用して、ファイル自体をロックすることがあるということです。またはドロップボックスなどの他のアプリケーション...
その結果、次にファイル ストリームを開く必要があるときに、別のプロセスによってロックされていると表示されます。これはすべて非常にまれにしか発生しませんが、発生した場合でも迷惑です。ファイルにアクセスできたとしても、完了するまで Dropbox にこのファイルをアップロードさせたくありません (数分かかる場合があります)。
私が必要とするのは、ファイルを手動でロックして、アプリケーションがこのファイルのファイル ストリームを開くことができるようにすることですが、手動で再度ロックを解除するまで、他のアプリケーションは開くことができません。
疑似コードで次のようなものを描きます。
File.Lock(filepath);
//... do something that opens and closes filestreams on this file
File.Unlock(filepath);
これを行う方法はありますか?「ファイルストリームを開いたままにする」という解決策は無効です。極力避けたいと思いますので、その点はご了承ください。