2017-02-21 32 views
0

Мы заметили, что с пользовательской формой Ax вокруг 1500-2000 пользовательских объектов зарезервированы. Конечный пользователь будет часто открывать эту форму несколько раз и быстро запускать ее с пределом пользовательского объекта. (too many form are open...)Сокращение пользовательских объектов в форме Axapta 2012

Я начал искать инструменты SysInternal, GDIViewer и Bear, что может привести к тому, что эта форма будет использоваться для многих ресурсов. Из моего поиска я пришел к выводу, что большинство ручек тратится на виртуальную память, виртуальную память и шрифты.

Теперь я побежал, застрял. Я надеялся найти ключ к тому, какой элемент управления формы запрашивает все эти ресурсы. Но я не могу привязать дескрипторы пользовательских объектов к элементу управления или объекту.

Мой вопрос: как определить, какие элементы управления формы Ax и элементы объектов User связаны? Если это невозможно, как можно отлаживать/отслеживать/просматривать/трассировать, какие элементы формы генерируют большинство ручек?

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <obj> 
     <type>Brush</type> 
     <count>276</count> 
    </obj> 
    <obj> 
     <type>Font</type> 
     <count>1762</count> 
    </obj> 
    <obj> 
     <type>Region</type> 
     <count>47</count> 
    </obj> 
    <obj> 
     <type>Bitmap</type> 
     <count>82</count> 
    </obj> 
    <obj> 
     <type>DC</type> 
     <count>78</count> 
    </obj> 
    <obj> 
     <type>Palette</type> 
     <count>2</count> 
    </obj> 
    <obj> 
     <type>Virtual Memory Shared</type> 
     <count>69</count> 
    </obj> 
    <obj> 
     <type>Virtual Memory Private</type> 
     <count>3020</count> 
    </obj> 
    <obj> 
     <type>Virtual Memory Mapped</type> 
     <count>34</count> 
    </obj> 
    <obj> 
     <type>Virtual Memory Image</type> 
     <count>2424</count> 
    </obj> 
</root> 
+0

Microsoft.Dynamics.HierarchyViewerWPF.HierarchyView включен в форму. Я думаю, что пользовательские объекты вызваны из-за этого. Но я должен уметь это доказать. – Reinard

ответ

0

Похоже, что ваша пользовательская форма нуждается в рефакторинге или вашему пользователю требуется больше памяти. Вы не указали, какую версию AX вы используете btw.

Чтобы ответить на ваш вопрос о нахождении всех элементов управления на форме:

AX2009 Loop through all the controls in the form on init

Вы могли бы использовать что-то подобное просто выливать все элементы управления в форме или положить его в форму-х run() и изменить его для работы с активной формой, чтобы предоставить вам список элементов управления ... но я не уверен, почему вы хотите это сделать.

Мне кажется, что вам нужен разработчик, чтобы посмотреть, как сконструированы некоторые пользовательские объекты, и если они потребляют слишком много памяти.