How can I release locks on files/folders after using Directory.GetFiles?
filelock, getfiles, vb.net
Solution
You are opening 2 seperate streams, then only closing the last one.
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)
The first line creates a new filestream instance then, before it can be used, the 2nd line creates a NEW instance and throws out the original one without disposing it.
You should only need one of these lines.
I recommend:
Dim f As New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
Problem
I'm using `IO.Directory.GetFiles` to search for files in a folder. After the searching is done, I can't use files in this folder until my application is closed. I haven't found any `Dispose` functions in `DirectoryInfo` class, so my question is: How can I release or unlock these files? My code: ``` Dim list = IO.Directory.GetFiles(folder, "*.*", IO.SearchOption.AllDirectories) ``` EDIT: I have examined my code once again very carefully (I couldn't reproduce my problem in another project) and it turned out that this function is locking the files: ``` 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 ``` It's strange. I'm closing the `FileStream` and disposing the whole object but file remains locked.