Я использую 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
и удаляю весь объект, но файл остается заблокированным.