Как еще проверить, что запущена 1 копия эксперта. - страница 3

 
Andrey Khatimlianskii:

Тестер от терминала я отличаю.

Возможно, что-то изменилось в работе с файлами. Но я бы не советовал решения, хорошо их не протестировав.

У меня данное решение работает более года. Правда, так как оно работает как защита от невнимательности - срабатывало всего пару раз. Выше привел рабочий пример для теста.

 
Вадим Калашнков:

срабатывало всего пару раз

"пару раз" - это вообще ни о чём не говорит.

У нас в офисе более 100 сотрудников. Иногда встречаются ситуации, когда файл .xls "занят" пользователем, хотя пользователь его давно закрыл.

 
Andrey Khatimlianskii:

Неоднократно нарывался на залоченый файл после вылета советника. До перезагрузки терминала открыть его не получалось.

более того, бывало локи оставались и после вылета всего терминала. 

В каких-то билдах исправили, поменяли способ блокировок или ещё чего, но как говорится "осадочек остался" :-) 

Той-же болезнью (персистентные локи) болел SQLite , давненько его не трогал за сейчас не скажу, но было такое что после краша локи сбрасывались только перезагрузкой

 
Вадим Калашнков:

У меня данное решение работает более года. Правда, так как оно работает как защита от невнимательности - срабатывало всего пару раз. Выше привел рабочий пример для теста.

Пишу в файл не закрывая его, открываю в ОнИнит, закрываю в ОнДеинит. (плохая привычка) 4ка, Вин 7ка. В не нагруженных состояниях все работает, а вот при выходе из нагруженных состояний и обращений к открытому файлу блокнотом часто получал залоченный файл и после штатного закрытия терминала, и после аварийного через диспетчер задач. Лок снимался перезагрузкой винды. 

 
В любом случае это решение не даст запустить копию, а там уже можно будет и самому разобраться залочен он штатно или из за бага терминала а не считать милисекунды в глобалках терминала.
 
Вадим Калашнков:
В любом случае это решение не даст запустить копию, а там уже можно будет и самому разобраться залочен он штатно или из за бага терминала а не считать милисекунды в глобалках терминала.

Ну да, ошибочный лок при не запущенном советнике только может быть. Но это отслеживаемо. В другую сторону, при запущенном советнике отсутствие лока вероятность гораздо меньше.