• ベストアンサー

ファイルの排他制御について

こんにちは。 Visual Studio 2005 のC#を使って、ファイルを加工するアプリを書いていますが、 ファイルの排他制御についてよく分らなくて困っています。 プログラムの構成としては、以下の通りです。 1:プログラムAがファイルXYZを作成します。 2:プログラムAとは別々に動く、プログラムBが、このファイルXYZを読み込んで データベースに書込む処理をします。 この処理で、もしもプログラムAがファイルXYZの作成中の時に、 プログラムBが同じタイミングでファイルXYZを開いてしまった場合、 ファイルが中途半端な状態で開いてしまうのではないかと思ってます。 こういう状態を回避するためにはどういう処理にすればよいのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

こちらを参考にされてはどうでしょう。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/284watchopen/watchopen.html
labrakun
質問者

お礼

ありがとうございます。 参考になりました。

その他の回答 (2)

回答No.2

フラグ制御してみたら? ファイルXYZの先頭にSTATUSを持つ。 プログラムAがXYZ作成時にSTATUSに’WRITING'と書いて、終了後に’READOK'と書く。 プログラムBはSTATUSが’READOK'になるまで待ち合わせて(n秒間隔でforとかwhileで)書くようにすればOKだと思います。 プログラムBがSTATUSが’READOK'と判断した後に’READING’として、プログラムAはSTATUSが’READING’の時は書き込まないとすると尚ベターだと思います。(プログラムBは処理終了時点でSTATUSを’READOK’に戻す必要があります)

labrakun
質問者

お礼

ありがとうございます。 こういうやり方も覚えておきます。

noname#208124
noname#208124
回答No.1

AでFileShare.Noneを指定してファイルを開く Bは開けるようになるまで待つ

labrakun
質問者

お礼

ありがとうございます。 このやり方を覚えておこうと思います。

関連するQ&A