投稿者 みどりこぶた  (高校生) 投稿日時 2017/9/6 16:54:19
すみません、非常に不十分な質問文でした、少し補足します。

ファイルが使用中かどうか、というより、
ファイルの排他的なオープンを試行した結果、成功・ロック取得の失敗・それ以外の原因による失敗、で切り分けたいです。


最初は、 事前に IO.File.Exists で存在するかどうかなどチェックを入れていたのですが、
よく考えると、事前チェックでは意味が無いことに気づき、
更に良く考えると、そもそもオープンに失敗したとき、ファイルが存在さえすれば、ロック取得に失敗したとみなせるのか、と気づき…
上記のようなコードになりました。


指摘感謝します、もう一度調べなおしてみました。
みましたが、
・例外を catch したらファイル使用中とみなす
・APIを使う
しか見つけられませんでした…。
APIの方は「IsFileAlreadyOpen」などを使うのでしょうか…?
ロック取得の失敗(共有違反エラー?)は区別できたのですが、「Err.LastDllError」で取得する値は他のスレッドやプロセスと共有なのでしょうか…。



もとはと言えば、別々のプロセス間でちょっとした同期をとりたくなり、それにファイルを使用しています。
他に簡単な方法があればいいのですが、C++ などは書いたことなくて自身がなくて…、vb.net の範囲でもできる方法ありますでしょうか…?



もう少しヒント与えていただけましたら幸いですm(_ _)m