1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Кеширование переменных Environment

Тема в разделе "Lotus - Программирование", создана пользователем Xalet, 11 май 2011.

  1. Xalet

    Xalet Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Собственно суть проблемы:

    присваиваю значение переменной session.SetEnvironmentVar("имяпеременной", data). Она считывается нормально session.GetEnvironmentValue("имяпеременной").
    Выключаю лотус. Открываю notes.ini нахожу переменную, очищаю, сохраняю. Запускаю лотус. session.GetEnvironmentValue("имяпеременной") упорно продолжает возвращать значение data. Где оно его запоминает, если не в notes.ini?

    Версия клиента 6.5.3. Запускаю не на сервере.
     
  2. VladSh

    VladSh начинающий
    Lotus team

    Репутация:
    0
    Регистрация:
    11 дек 2009
    Сообщения:
    1.248
    Симпатии:
    2
    Может где-то код забыли, который прописывает значение; например на QO базы данных/вида/формы?
     
  3. Xalet

    Xalet Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Так именно в этом коде я и проверяю, если считал из конфигурации новое значение, то заменяю сетом, если не считал, то проверяю, присвоено ли что-то уже гетом и если нет, то не разрешаю открыть базу. Но даже если бы я где-то как-то вписывал бы вызывая SetEnvironmentVar, после закрытия лотуса, оно бы появилось в notes.ini, но там как не было, так и нет, но успешно считывается значение. Непонятно только откуда.
     
  4. TIA

    TIA :-)
    Lotus team

    Репутация:
    0
    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    xalet
    Убедитесь в полной выгрузке процесса nlnotes.exe

    Подробности:
    Процесс Notes довольно долго выгружается из памяти. Когда окно Notes пропало, ещё не значит что процесс выгрузился. Если в момент выгрузки процесса вы начнёте загружать другой процесс, использующий ещё не выгруженные dll, видоуз не станет их выгружать, а переиспользует для нового процесса. Переменные notes.ini кэшируются в так называемой шаред-памяти dll, т.е. все процессы, использующие эту dll будут видеть одни и те же значения. Поэтому если вы быстро перегрузите notes, то изменения произведённые в notes.ini не через сервисы Notes (которые пишут в кэш в шаред-памяти) в кэше не обновятся.
    Чтобы быть уверенным - смотрите когда удалится процесс нотеса в TaskManager или пользуйте KillNotes.exe
     
  5. Xalet

    Xalet Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Комп перезагружал. Кстати, а лотусы разве запустятся, пока он не закончился?
     
Загрузка...

Поделиться этой страницей