Локальный и глобальный кеш
Локальный кеш - сохраняемые данные, которые доступны только текущему скрипту.
Глобальный кеш - сохраняемы данные, которые доступны всем скриптам и агентам.
Методы для работы с локальным кешем:
IContext.StoreObject(...) - Записать объект в кеш
IContext.LoadObject(...) - Загрузить объект из кеша.
Методы для работы с глобальным кешем:
IContext.StoreGlobalObject(...) - Записать объект в глобальный кеш.
IContext.LoadGlobalObject(...) - Загрузить объект из глобального кеша
Важно: периодически кеш данных очищается для освобождения места.
Для того чтобы при очередном сжатии не удалились данные их нужно обернуть в класс NotClearableContainer.
Пример с глобальным кешем:
using TSLab.DataSource; using TSLab.Script; using TSLab.Script.Handlers; namespace MyLib { public class TestGlobalCashe : IExternalScript { public void Execute(IContext ctx, ISecurity sec) { // Записать в глобальный кеш var value = 1.1; // значение var key = "key"; // ключ в кеше (любая уникальная строка) var container = new NotClearableContainer<double>(value); ctx.StoreGlobalObject(key, container); // Прочитать из глобального кеша var key2 = "key"; var container2 = ctx.LoadGlobalObject(key2) as NotClearableContainer<double>; var value2 = container2?.Content; ctx.Log($"Value: {value2}", MessageType.Info, true); } } }
Примечание: при кешировании на диск идет сериализация объекта через BinaryFormatter. Поэтому все классы объектов, которые кешируются должны иметь атрибут [Serializable].