DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リモートファイルに対する読取・書込の制御について

環境/言語:[環境:WinXP Pro SP2、WinXP Pro SP3、Windows Server 2008 使用言語:VB.NET .NET Framework2.0]
分類:[.NET]

お世話になっております。

Visual Basicで複数のクライアントからファイルサーバー上にあるファイルの読取・書込の処理を制御する方法を調査しています。
クライアントAからファイルサーバー上のファイルを読取処理中に、クライアントBでそのファイルに書込をしようとすると、


「System.IO.IOException: プロセスはファイル "ファイルのパス" にアクセスできません。このファイルは別のプロセスが使用中です。」


というエラーが発生します。
クライアントAからファイルサーバー上のファイルを書込処理中に、クライアントBでそのファイルを読み取ろうとしても同様の現象が起きます。

この現象を回避したいため、クライアントAがファイルサーバー上のファイルに読取・書込処理中は、
他のクライアントは書込処理をクライアントAが読取・書込処理が終わるまで待つという動作をしたいのですが、VB.NETでそのようなコーディングは可能でしょうか?

クライアントのOS:Windows XP Pro SP3×14台、Windows XP Pro SP2×18台
ファイルサーバーのOS:Windows Server 2008

クライアントはファイルサーバーのフォルダをドライブにマッピングしており、
ファイルの読取・書込処理はSystem.IO.FileStreamクラスを使用しております。


以上、宜しくお願い致します。
クライアント同士で通信できないのであれば、定期的にアクセス可能かチェックする(一定時間待って再度試みる)しかないように思えます。

# ほかに方法あればフォロー願います。
回答ありがとうございます。

クライアント同士で通信できる仕組みはありません。

読取・書込みを行う処理でSystem.IO.IOExceptionをtry・Catchで拾って読取・書込みをリトライするしかないでしょうか?エラー処理でのコーディング以外の方法はあるでしょうか?

やりたい動作としては、

@読取・書込みを行う前にファイルが読取・書込み可能かをチェックする。

読取・書込み可能な場合
@ファイルをロック(他の端末から読取・書込みを出来なくする。)する。
A読取・書込みを行う。
Bロックを開放する。

読取・書込み不可能な場合
@待機してリトライする。
A数回失敗したらエラーにする。


方法あれば宜しくお願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板