12.04.2010, 11:14 | #1 |
Участник
|
Крэш системы при использовании не актуального MapEnumerator
X++: static void JobUpdateMapTest(Args _args) { Map Map = new Map(Types::Integer, Types::Container); MapEnumerator m; str str31_34 = "1234567890" + "1234567890" + "1234567890" + "1234"; // 31 <= length <= 34 int key = 1; ; Map.insert(key, ["1"]); m = Map.getEnumerator(); m.moveNext(); // получаем энумератор // меняем содержимое мапа Map.remove(key); Map.insert(key, [str31_34]); // пытаемся двигаться дальше m.moveNext(); // crash } Вопрос к общественности: 1) Правомерно ли, заранее полученный MapEnumerator, использовать после изменения самого мапа? Только если производилось удаление элементов? Только если производилось добавление? Всегда правомерно/не правомерно? 2) А как вы реализуете массовое обновление значений, хранящихся в мапе? P.S.: Забыл указать. Ошибка у меня воспроизводится в версии AX4.0. В Ax2009 ошибки нет. Значит ли это, что такой код писать можно? Последний раз редактировалось S.Kuskov; 12.04.2010 в 11:22. |
|
Теги |
баг, как правильно |
|
|