我有一个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中的调试基础设施。
这里有一篇很好的Code Project文章here 基本上使用OutputDebugString并通过DebugView捕获它,或者将其导出到文件中,将删除你在锁定日志文件方面的问题,并且还可以消除多个脚本排队写入日志文件的瓶颈。
希望这能帮到你。