AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2009, 15:37   #1  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
usageCount в Ax2009
Запуск тестового джобика из документации (ссылка):
X++:
static void Object_UsageCount(Args _args)
{
    Object objA = new Object();
    Object objB;
    ;

    print objA.usageCount();    // Prints 1.

    objB = objA;                // objB is a reference to objA.
    print objA.usageCount();    // prints 2
    pause;
}
в Axapta 3.0 и Ax 4.0 приводит к вполне предсказуемым результатам, т.е. печатается "1" и "2" соответственно.
При запуске этого же кода в Ax2009 рисуются "2" и "3". Это только у меня так? ))
Старый 29.09.2009, 18:33   #2  
corner77 is offline
corner77
Участник
 
18 / 25 (1) +++
Регистрация: 28.04.2009
У меня так же.
Могу предположить, что одно соединение при создании отводится сборщику мусора. Еще не смотрел, но похоже в 2009-м что-то подредактировали в нем. По крайней мере было бы логично при создании объекта сохранять указатель на него в списке. И через определенное время опрашивать список на предмет usageCount(). Если кол-во соединений=1 (то есть только сам сборщик), то удалять из памяти.
Возможно, раньше usageCount() возвращал на 1 меньше, чтобы скрыть лишнее соединение. Это только мое предположение. Просто фантазии
Но если я хоть частично прав, то не факт, что и дальше эта фунция будет возвращать такое количество. ТО есть могут снова начать скрывать лишнее соединение.
Старый 30.09.2009, 08:53   #3  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Не похоже на сборщик мусора, поскольку, как выяснилось, этот глюк не распространяется на наследников Object. На мой взгляд, выявленная "нестыковка" нигде не должна приводить к ошибочным ситуациям, поскольку мне не позволяет фантазия придумать ситуацию, когда бы в коде использовался метод usageCount "чистого" Object.
Старый 30.09.2009, 09:13   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от tricky Посмотреть сообщение
Мне не позволяет фантазия придумать ситуацию, когда бы в коде использовался метод usageCount "чистого" Object.
а мне - ситуацию, где бы этот самый Object вообще бы создавался. Т.е не понятно почему он (класс Object) не является абстрактным?
Старый 30.09.2009, 09:31   #5  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Переменная типа Object может ссылаться на экземпляр любого класса, что используется очень часто по всей системе. Думаю, что если бы Object был абстрактным, то таких присваиваний нельзя бы было производить.
Старый 30.09.2009, 09:48   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от tricky Посмотреть сообщение
Думаю, что если бы Object был абстрактным, то таких присваиваний нельзя бы было производить.
Нет. Вы ошибаетесь
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 30.09.2009, 10:15   #7  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Скорее всего, да, я не прав. На обычных классах такое прокатывает, но Object - системный, и быть может (мое дикое предположение) у него свои есть особенности.
Старый 27.06.2012, 17:00   #8  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
похоже, что это странное поведение метода usageCount() распростроняется на все системные классы , наследуемые от Оbject (проверил на BinData, Binary, TextIO).

Интересно, а в AX 2012 эффект сохранился?
Старый 27.06.2012, 17:09   #9  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Сохранился.
Старый 27.06.2012, 17:22   #10  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
Цитата:
Сообщение от oip Посмотреть сообщение
Сохранился.
И некорректный пример в документации сохранился http://msdn.microsoft.com/en-us/libr...ect.usagecount (зато адрес какой красивый)

Не красят такие противоречия, не красят
Теги
ax2009, ax3.0, ax4.0, counter, object

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axcoder: Sidax & Tabax for Ax2009 Blog bot DAX Blogs 4 17.02.2021 19:13
Khue Trinh: Fill Utility in AX2009 Blog bot DAX Blogs 0 10.07.2009 10:05
ax2009 & SSRS kitty DAX: Программирование 6 02.04.2009 10:38
axcoder: AxPath pugin for Tabax which works with Ax3, Ax4, Ax2009 Blog bot DAX Blogs 0 08.11.2008 02:11
Интеграция Ax2009 c MS Project Hannibal DAX: Функционал 4 31.07.2008 10:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:48.