- ベストアンサー
ファイルの排他制御について
こんにちは。 Visual Studio 2005 のC#を使って、ファイルを加工するアプリを書いていますが、 ファイルの排他制御についてよく分らなくて困っています。 プログラムの構成としては、以下の通りです。 1:プログラムAがファイルXYZを作成します。 2:プログラムAとは別々に動く、プログラムBが、このファイルXYZを読み込んで データベースに書込む処理をします。 この処理で、もしもプログラムAがファイルXYZの作成中の時に、 プログラムBが同じタイミングでファイルXYZを開いてしまった場合、 ファイルが中途半端な状態で開いてしまうのではないかと思ってます。 こういう状態を回避するためにはどういう処理にすればよいのでしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こちらを参考にされてはどうでしょう。
その他の回答 (2)
- pepe_clift
- ベストアンサー率20% (52/255)
フラグ制御してみたら? ファイルXYZの先頭にSTATUSを持つ。 プログラムAがXYZ作成時にSTATUSに’WRITING'と書いて、終了後に’READOK'と書く。 プログラムBはSTATUSが’READOK'になるまで待ち合わせて(n秒間隔でforとかwhileで)書くようにすればOKだと思います。 プログラムBがSTATUSが’READOK'と判断した後に’READING’として、プログラムAはSTATUSが’READING’の時は書き込まないとすると尚ベターだと思います。(プログラムBは処理終了時点でSTATUSを’READOK’に戻す必要があります)
お礼
ありがとうございます。 こういうやり方も覚えておきます。
AでFileShare.Noneを指定してファイルを開く Bは開けるようになるまで待つ
お礼
ありがとうございます。 このやり方を覚えておこうと思います。
お礼
ありがとうございます。 参考になりました。