VB   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了vb.net – 如何在使用Directory.GetFiles后释放文件/文件夹上的锁?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用IO.Directory.GetFiles来搜索文件夹中的文件.搜索完成后,在我的应用程序关闭之前,我无法使用此文件夹中的文件.我还没有在DirectoryInfo类中找到任何Dispose函数,所以我的问题是:如何释放或解锁这些文件?

我的代码:

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,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并处理整个对象,但文件仍保持锁定状态.

您正在打开2个单独的流,然后只关闭最后一个流.
Dim f As FileStream = New FileStream(filePath,8192)
 f = New FileStream(filePath,8192)

第一行创建一个新的文件流实例,然后,在它可以使用之前,第二行创建一个新实例并抛出原始实例而不处理它.

你应该只需要其中一条线.

我建议:

Dim f As New FileStream(filePath,8192)

大佬总结

以上是大佬教程为你收集整理的vb.net – 如何在使用Directory.GetFiles后释放文件/文件夹上的锁?全部内容,希望文章能够帮你解决vb.net – 如何在使用Directory.GetFiles后释放文件/文件夹上的锁?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。