プレーンテキストファイルでセクション(strSection)とそのセクション内のアイテム(strItem)を見つけるための次のVBSCriptコードがあります。
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」に格納されたままになり、後で処理されます。