Работа с кешем
"сохраняю переменную в кэш:
int qty = 1; ctx.StoreObject(__key, qty);
при следующем пересчете скрипта загружаю:
object fv = ctx.LoadObject(__key); if (fv != null) volume = (int)fv; else ctx.Log("Volume not in cache!", MessageType.Warning);
И всегда мне печатается сообщение о том, что по данному ключу в кэше ничего нет. " ===
Нужно использовать класс NotClearableContainer и сохранять в кеше объекты, а не типы-значения, потому что получаются операции упаковки-преобразование и распаковки-преобразование.
class ScriptUserData
{
public int Qty { get; set; }
}
...
Context.StoreObject(cashKey, new NotClearableContainer(new ScriptUserData{ Qty = qty }));
var cacheObj = m_context.LoadObject(cashKey);
if ((cacheObj is NotClearableContainer container) && (container.Content is ScriptUserData data))
{
var qty = data.Qty;
}
Last updated
Was this helpful?