powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SetLibraryList
11 сообщений из 11, страница 1 из 1
SetLibraryList
    #32545401
dGrichine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PB 6.5.1

Кто сталкивался с таким поведением SetLibraryList?

1. Сохраняю текущий LibraryList приложения
2. Динамически с использованием SetLibraryList подключаю к своему приложению временную библиотеку.
3. ...
4. Далее возвращаю предыдущий LibraryList на место, опять же с использованием SetLibraryList
5. Пытаюсь удалить временную библиотеку, но файл с ней все еще занят текущим приложением и удалить его невозможно. Файл остается занятым вплоть до самого завершения приложения...

Как заставить приложение отпустить ненужный файл?
Есть у кого мысли или кто-нить сталкивался с таким поведением?

===
Гришин Дмитрий
...
Рейтинг: 0 / 0
SetLibraryList
    #32545416
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак. Как только Class Loader или Datawindow Engine сходил в твою временную PBL/PBD-ку, усё...
...
Рейтинг: 0 / 0
SetLibraryList
    #32545955
dGrichine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль... нужно будет реализовывать сборщик мусора...

===
Гришин Дмитрий
...
Рейтинг: 0 / 0
SetLibraryList
    #32546567
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так ты расскажи, зачем это все нужно, и возможно найдется способ как это сделать.
в частности - зачем удалять файл?
...
Рейтинг: 0 / 0
SetLibraryList
    #32547199
dGrichine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyтак ты расскажи, зачем это все нужно, и возможно найдется способ как это сделать.

Если в кратце:
есть приложение на сервере - оно небольшое и запускается очень часто - по запросам пользователей... чем больше пользователей тем чаще приложение дергается... хоть приложение и работает непродолжительное время, но в связи с тем, что оно выполняется очень часто, файлы библиотек постоянно заняты и их невозможно поменять в процессе функционирования системы.
Замена библиотек в процессе работы необходима, поэтому принято решение при запуске приложения копировать библиотерку во временный файл и уже его подключать к приложению в рантайме... таким образом получается для каждой сессии свой набор библиотек... по завершению работы приложения с объектами временной библиотеки, файл библиотеки становится больше не нужным, и его нужно удалить... хотелось это делать из самого приложения, что бы оно само и убирало за собой...

PS
2 Anatoly Moskovsky
у тебя кстати, получилось,
Anatoly Moskovskyчтобы запущенная в параллели программа дождалась завершения вызывающей.?

===
Гришин Дмитрий
...
Рейтинг: 0 / 0
SetLibraryList
    #32547498
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗамена библиотек в процессе работы необходима
Зачем? Что находится там, код или dataobjects?
Что значит приложение на сервере , EAServer, distributed PB, MTS + PB com objects, или какой-то домострой?
...
Рейтинг: 0 / 0
SetLibraryList
    #32547518
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗамена библиотек в процессе работы необходима, поэтому принято решение при запуске приложения копировать библиотерку во временный файл и уже его подключать к приложению в рантайме... таким образом получается для каждой сессии свой набор библиотек... по завершению работы приложения с объектами временной библиотеки, файл библиотеки становится больше не нужным, и его нужно удалить... хотелось это делать из самого приложения, что бы оно само и убирало за собой...
Что то как то мудрено все получается. Неужели так часто изменяются библиотеки, что их нужно проверять при каждом запуске программы ? Кто например мешает сделать обычный INI-шник, в котором держать список подключаемых библиотек ? Программа при загрузке считывает этот список, по нему производит подключение библиотек именованных как "<НомерВерсии>_<Библиотека>.PBL". Тогда чтобы выложить изменения достаточно просто увеличить номер версии, положить библиотечки рядом со старыми и изменить INI-файл. Текущие сессии так и будут продолжать работать до отключения со старыми библиотеками, все новые сессии уже начнут подключаться к обновленным. Раз у Вас сессии работают недолго, то думаю буквально через небольшое время старые библиотеки будут освобождены и готовы у удалению.
...
Рейтинг: 0 / 0
SetLibraryList
    #32547675
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dGrichine по завершению работы приложения с объектами временной библиотеки, файл библиотеки становится больше не нужным, и его нужно удалить...
А зачем удалять? Пусть при запуске проверяется версия на сетевом диске и локальная, и копируется только новая.

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

пока еще нет
застопорился на использовании WaitForSingleObject, и пока не было времени разбираться.
...
Рейтинг: 0 / 0
SetLibraryList
    #32547703
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий, а что там стопориться, пойди сюда:
http://eric.aling.tripod.com/PB/tips/pbtip32.htm
...
Рейтинг: 0 / 0
SetLibraryList
    #32548150
dGrichine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЗачем? Что находится там, код или dataobjects?
Что значит приложение на сервере , EAServer, distributed PB, MTS + PB com objects, или какой-то домострой?

по большому счету там находятся конечно dataobjects и их можно было бы создавать динамически используя например:
lds.Create(LibraryExport(...),ls_error), но в таком случае не знаю как быть с composite DW и глобальными функциями определенныи в этой библиотеке и участвующими в computed object expressions...
иного решения как подключить динамически саму библиотеку не вижу... может, конечно, плохо смотрю...

"на сервере" - имелось ввиду не на локальной машине клиента. с точки зрения PB это конечно домострой - это может быть и оракловый сервер приложений и аксаптовский, а может быть и distributed PB... не важно... главное, что задача на сервере каким-то образом стартует по запросам пользователя...

to ASCRUS
да, согласен, что изменение имени билиотеки тоже выход, тем более что когда приложение стартует ей на вход подается инишник в котором прописан в том числе и список библиотек... единственное нужно будет посмотреть что будет дешевле: следить за соответсвием изменений версии библиотек и ini файлов или один раз реализовать механизм уборки мусора...


===
Гришин Дмитрий
...
Рейтинг: 0 / 0
SetLibraryList
    #32548352
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Филипп
ответил в топике Обновление приложения
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SetLibraryList
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]