Здравствуйте, KVakaMarshal, Вы писали:
KVM>... проблема следующего плана. Пишу свой OPC DA2-сервер (без ATL). Клиентов ранее не писал и с COM'ом не работал. Но в целом все понятно, кроме одного — время жизни перечислителя на стороне OPC-клиента, т.е. когда он должен сделать Release.
Я ОРС-сервера не писал, но общий ответ на вопрос "когда OPC-клиент должен сделать Release" такой: клиент должен сделать Release объекту тогда, когда его этот объект больше не интересует. К этому можно добавить, что спецификация интерфейса IEnumXXX не накладывает специальных требований к времени жизни этого объекта. Но, по крайней мере, справедливо, что время его жизни не может превышать время жизни породившей его коллекции, хотя и тут енумератор — это самостоятельный объект.
KVM>Первый вариант дает преимущество в том, что все используемые в OPC-сервере перечислители можно реализовать одним-двумя шаблонными классами и не париться. А вот во втором случае практически каждый перечислитель надо реализовывать отдельно.