2008-10-29 4 views
4

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

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

ответ

4

Да, FileSystemObject поддерживает эксклюзивный доступ к файлам. Если у другого процесса есть блокировка файла при вызове OpenTextFile, вы получите сообщение об ошибке (разрешение отклонено). Вы должны уловить ошибку и обработать ее соответствующим образом (проверьте, что Err.Number <> 0 после вызова OpenTextFile - это один из способов, которым вы могли бы это сделать).

0

Я не знаю, как API-интерфейс, доступную для Windows для вас, но вы должны взглянуть на Debugging инфраструктуры в Windows API.

Theres хорошая статья Код проекта на нем here основном с помощью OutputDebugString и ловить, что с DebugView, или трубопроводами его в файл удалим вы выдаете с блокировкой файла журнала, а также удалит горлышко бутылки нескольких алфавитов в очереди, чтобы написать в файл журнала.

Надеюсь, это поможет.

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