Вызовите GetOrAddAsync в методе OnOpenAsync

Я использую StatefulService с IReliableDictionary,

В настоящее время я звоню StateManager.GetOrAddAsync<IReliableDictionary> везде мне нужен этот словарь.

Лучше всего звонить только один раз StateManager.GetOrAddAsync<IReliableDictionary> в OnOpenAsync метод StatefulService а хранить возврат в член?

2 ответа

Решение

Это не имеет большого значения. Я спросил об этом команду разработчиков и получил такой ответ:

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

Курсив текст, вставленный мной.

Согласно официальной документации здесь , не рекомендуется хранить надежные ссылки на коллекции.

Мы не рекомендуем сохранять ссылки на надежные экземпляры коллекций в переменных или свойствах членов класса. Особое внимание следует уделить тому, чтобы ссылка всегда устанавливалась на экземпляр в течение жизненного цикла службы. Reliable State Manager выполняет эту работу за вас и оптимизирован для повторных посещений.

Другие вопросы по тегам