У меня есть сценарий VBS, который в настоящее время записывает в файл журнала. Этот сценарий можно запустить для нескольких одновременных процессов, так что теперь я беспокоюсь о параллелизме.
В настоящее время я использую FileSystemObject для открытия и записи в этот файл. Поддерживает ли FSO эксклюзивный доступ к файлам?





Да, FileSystemObject поддерживает монопольный доступ к файлам. Если другой процесс заблокировал файл при вызове OpenTextFile, вы получите сообщение об ошибке (сообщение об отказе в разрешении). У вас должна быть возможность перехватить ошибку и обработать ее соответствующим образом (убедитесь, что Err.Number <> 0 после вызова OpenTextFile - один из способов сделать это).
Я не знаю, насколько вам доступен Windows API, но вам стоит взглянуть на инфраструктуру отладки в Windows API.
Об этом есть хорошая статья в Code Project здесь В основном использование OutputDebugString и перехват этого с помощью DebugView или передача его в файл устранит проблему с блокировкой файла журнала, а также устранит узкое место нескольких сценариев, поставленных в очередь для записи в файл журнала.
Надеюсь это поможет.
Если это вообще возможно, я рекомендую вам закрыть дескриптор и снова открывать его каждый раз, когда вам нужно записать в файл, чтобы избежать возможных проблем с монопольным доступом к файлу. Бывший:
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