IO.Directory.GetFiles
フォルダ内のファイルを検索するために使用しています。検索が完了すると、アプリケーションを閉じるまで、このフォルダー内のファイルを使用できません。Dispose
クラスで関数が見つからないDirectoryInfo
ので、質問は次のとおりです。これらのファイルを解放またはロック解除するにはどうすればよいですか?
私のコード:
Dim list = IO.Directory.GetFiles(folder, "*.*", IO.SearchOption.AllDirectories)
編集:
コードをもう一度注意深く調べたところ (別のプロジェクトで問題を再現できませんでした)、この関数がファイルをロックしていることがわかりました。
Public Function ComputeFileHash(ByVal filePath As String)
Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
Dim f As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
f = New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
md5.ComputeHash(f)
f.Close()
f.Dispose()
Dim hash As Byte() = md5.Hash
Dim buff As Text.StringBuilder = New Text.StringBuilder
Dim hashByte As Byte
For Each hashByte In hash
buff.Append(String.Format("{0:X2}", hashByte))
Next
Dim md5string As String
md5string = buff.ToString()
Return md5string
End Function
それは奇妙です。FileStream
オブジェクト全体を閉じて破棄していますが、ファイルはロックされたままです。