投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/9/6 19:47:00
強いて言えば、こんな感じでしょうか。
Try
 'ファイルオープン処理 
Catch ex As IOException When ex.HResult = STIERR_SHARING_VIOLATION '&H80070020 
 'プロセスはファイルにアクセスできません。別のプロセスが使用中です。 
Catch ex As IOException When ex.HResult = STIERR_DEVICE_LOCKED '&H80070021 
 'プロセスはファイルにアクセスできません。別のプロセスがファイルの一部をロックしています。 
Catch ex As Exception
 'その他の例外:必要に応じて再 Throw する 
Finally
 '後始末 
End Try



機能要件にもよりますが、プロセス間の排他制御だけが目的ならば、
ファイルではなく、System.Threading.Mutex を使った方が簡単かも知れません。

また、プロセス間でのデータ通信が目的ならば、
WCF を使うとか(System.ServiceModel 名前空間)、あるいは
昔ながらの .NET Remoting (System.Runtime.Remoting 名前空間)を
利用するという手もあります。

同一ファイルを複数のプロセスから編集する場合には、
System.IO.MemoryMappedFiles.MemoryMappedFile
を使うという手もあります。(排他制御とは別の話として)