我有以下一段 VBSCript 代码来在纯文本文件中查找一个部分 (strSection) 和该部分中的一个项目 (strItem)。
Do While Not myINIFile.AtEndOfStream
sl_Sleep(100)
s = myINIFile.ReadLine <--- **This is the line that rises the exception**
If s = strSection Then
'Find the correct line
Do While Not myINIFile.AtEndOfStream
s = myINIFile.ReadLine
If InStr(s, strItem)>0 Then
Exit Do
End if
Loop
Exit Do
End if
Loop
似乎如果我不设置 Sleep(100) (毫秒)(或使用较低的值,如 20 或 50),我最终会收到一个异常,上面写着“进程无法访问文件,因为另一个进程已锁定文件的一部分”。
我认为 Do While 中的条件是在 AtEndOfStream 尚未完成时调用 ReadLine 方法。然而,对每条线路使用 100 毫秒会使该过程减慢到无法接受的速度。
这是真正发生的事情还是其他地方的问题?有什么办法可以防止这个进程被锁定或等待多一点(直到它被释放) ,只有当它被锁定时才不会引发异常?
编辑:此代码循环通过一个看起来像这样的文件:
[Section1]
param1 = 100
param2 = 200
param3 = 300
[Section2]
param1 = 1000
param2 = 2000
param3 = 3000
[Section3]
param1 = 1
param2 = 2
param3 = 5
param4 = 10
param5 = 20
代码应该遍历文件,直到找到 [SectionX] 行 (strSection),然后继续读取行,直到找到“paramx”行 (strItem)。该行然后保存在's'中,稍后处理。