4

現在、ログファイルに書き込む VBS スクリプトがあります。このスクリプトは、複数の同時プロセスから開始できるため、同時実行が心配です。

現在FileSystemObject、このファイルを開いて書き込むために使用しています。FSO は排他的ファイル アクセスをサポートしていますか?

4

3 に答える 3

4

はい、FileSystemObject は排他的ファイル アクセスをサポートしています。OpenTextFile を呼び出したときに別のプロセスがファイルをロックしていると、エラー (アクセス許可拒否エラー) が発生します。エラーをトラップして適切に処理できるはずです (OpenTextFile の呼び出し後に Err.Number <> 0 を実行する方法が 1 つであることを確認してください)。

于 2008-10-30T02:02:06.613 に答える
0

Windows API にどの程度アクセスできるかはわかりませんが、Windows API のデバッグ インフラストラクチャを確認する必要があります。

基本的に OutputDebugString を使用してDebugViewでキャッチする か、ファイルにパイプすると、ログ ファイルのロックに関する問題が解消され、ログ ファイルに書き込むためにキューに入れられた複数のスクリプトのボトルネックも解消されます。

お役に立てれば。

于 2008-10-30T11:53:04.097 に答える
0

可能であれば、ファイルへの書き込みが必要になるたびに、ハンドルを閉じて再度開くことをお勧めします。これにより、排他的なファイル アクセスの問題が発生する可能性を回避できます。元:

set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "jfdskfdkls"
objFSO.Close
'something something
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "gfdgfdgfd"
objFSO.Close
'something else
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "ddsgfgdfsgdfs"
objFSO.Close
于 2008-12-23T00:29:46.623 に答える