我有一个当前写入日志文件的 VBS 脚本。这个脚本可以启动我的多个同时进程,所以现在我担心并发性。
我目前FileSystemObject
用来打开和写入这个文件。FSO 是否支持独占文件访问?
我有一个当前写入日志文件的 VBS 脚本。这个脚本可以启动我的多个同时进程,所以现在我担心并发性。
我目前FileSystemObject
用来打开和写入这个文件。FSO 是否支持独占文件访问?
是的,FileSystemObject 确实支持独占文件访问。如果在您调用 OpenTextFile 时另一个进程锁定了该文件,您将收到错误消息(权限被拒绝错误)。您应该能够捕获错误并适当地处理它(在调用 OpenTextFile 之后检查 Err.Number <> 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
我不知道 Windows API 对你来说有多容易访问,但你应该看看 Windows API 中的调试基础结构。
这里有一篇很好的代码项目文章 基本上使用 OutputDebugString 并使用 DebugView 捕获它,或者将其传送到文件将消除锁定日志文件的问题,还将消除排队写入日志文件的多个脚本的瓶颈。
希望这可以帮助。