确认基于StreamReader的XML许可证文件读取代码是否无锁定问题
关于XML文件读取的文件锁定问题确认
你的这段代码不会引发独占式文件锁定,其他进程可以同时读写该许可证文件,核心原因在于FileStream构造时的第四个参数:
- 第四个参数
'ReadWrite'对应.NET的FileShare.ReadWrite枚举值,它明确允许其他进程同时对目标文件执行读取和写入操作,不会阻止其他进程访问该文件。 - 同时你请求的是
FileAccess.Read(第三个参数),只获取读取权限,不会抢占写入锁,进一步降低了冲突概率。
补充优化建议
读取完成后建议手动释放流资源,避免不必要的资源占用,推荐用PowerShell的using语句(PS5.1及以上支持)自动管理资源:
using ($FileStream = New-Object System.IO.FileStream $Path, 'Open', 'Read', 'ReadWrite') { using ($StreamReader = New-Object System.IO.StreamReader($FileStream)) { $ReadFile = [xml] $StreamReader.ReadToEnd() } }
或者用try/finally块确保资源释放:
$FileStream = New-Object System.IO.FileStream $Path, 'Open', 'Read', 'ReadWrite' $StreamReader = New-Object System.IO.StreamReader($FileStream) try { $ReadFile = [xml] $StreamReader.ReadToEnd() } finally { $StreamReader.Close() $FileStream.Close() }
内容的提问来源于stack exchange,提问作者Jake Roberts
相关产品推荐
相关产品推荐

