0

ファイルをダウンロードするプログラム (簡易ファイル アップデーター) があります。その前に、このファイルの古いバージョンが削除のためにキューに入れられます。しかし、このファイルをテキスト エディタなどで編集 (保存して閉じる) すると、プログラムはファイルの削除を拒否します。

私はこのようなサブを持っています

Private Sub delete_file(ByVal dir As String)
    Try
        If My.Computer.FileSystem.FileExists(dir) Then My.Computer.FileSystem.DeleteFile(dir)
    Catch ex As Exception
        Debug.WriteLine(ex.ToString())
        Sleep(1000)
        delete_file(dir)
    End Try
End Sub

再帰から抜け出すことはありません。例外は、ファイルが他のプロセスによって使用されていることを示しており、待機しても何も変わりません。手がかりはありますか?

[編集] サブを少し変更したため、例外ハンドラーに再帰が含まれていません

Private Sub delete_file(ByVal dir As String)
    Dim ok As Boolean = True
    Try
        If My.Computer.FileSystem.FileExists(dir) Then My.Computer.FileSystem.DeleteFile(dir)
    Catch ex As Exception
        Debug.WriteLine(ex.ToString())
        ok = False
    End Try

    If ok = False Then
        Sleep(1000)
        delete_file(dir)
    End If

End Sub
4

1 に答える 1

0

「別のプロセス」という言葉は非常に曖昧です。

私のプログラムの他の関数が同じファイルを 2 回開き、1 回だけ閉じていたことが判明しました。その削除の問題を修正すると、削除されます。

したがって、同じエラーが発生した場合は、このファイルが変更されている可能性がある他の場所をプログラムで検索してみてください。

コメントをありがとう、彼らは確かに良いプログラミングについていくつかのヒントを与えてくれました。

于 2013-03-20T10:46:25.643 に答える