投稿者 るきお  (社会人) 投稿日時 2015/1/14 22:23:53
こっちでファイルをつかんだら処理が終わるまで離さないようにすることになると思います。

具体的にはひでとさんがどうやってファイルにアクセスしているのかによりますが、
たとえば、File.Openを使ってファイルを開いている場合は、FileShare.Noneを指定するとファイルを排他的につかんで他のプロセスからのアクセスを排除することができます。
この状態だと、別のソフトでそのファイルを開くことはできず、エクスプローラを使ったコピーすらできなくなります。
ですから、ひでとさんが干渉を受けているというソフトも干渉できなくなるでしょう。
もちろん、処理が完了してファイルを閉じれば他のソフトからもアクセスできるようになります。

この機能を使ったWindowsフォームのサンプルを紹介します。
Button1をクリックするとC:\vb\myfile.txtを開きます。Button2をクリックすると日付を書き込みます。Button3をクリックするとファイルを解放します。
Button1をクリックしてから、Button3をクリックするまでの間他のソフトはこのファイルにアクセスできなくなります。

Public Class Form1

    Dim stream As IO.Stream
    Dim writer As IO.StreamWriter
   
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim fileName As String = "C:\vb\myfile.txt"
        stream = IO.File.Open(fileName, IO.FileMode.Create, IO.FileAccess.ReadWrite, IO.FileShare.None)
        writer = New IO.StreamWriter(stream)

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        writer.WriteLine(Now.ToString)

    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        writer.Close()
        writer.Dispose()

        stream.Close()
        stream.Dispose()

    End Sub
End Class


なお、File.Openを使うのが解決策だというわけではなく、ひでとさんがどうやっているかによって回答が変わるという話だけだと意味がわからないかと思って一例を載せただけです。

こういうことではなく、そもそもファイルをつかむことすらできない状態なら shuさんのおっしゃるようにTry Catch等で辛抱するしかないですのですが、「ファイルを作ったり」と書いたあったので、作る瞬間は確実につかめるはずですから、上記のような解決策も可能性はあるなと思いました。