19.12.2016, 16:33 | #1 |
Участник
|
Многопоточное вычисление дисплейных методов
Привет всем!
Столкнулся с одной формой, на которой навешано куча тяжелых дисплейных методов. Из-за которых блокировалась работа пользователей. cacheAddMethod не сильно помогал, так как даже первый незакешированный вызов блокирует интерфейс на несколько десятков секунд при каждой прокрутке страницы на гриде. Целью моих экспериментов было создать такое кеширование дисплейных методов, которое не блокирует пользовательский интерфейс даже при первой прорисовке данных. Во вложении проект для AX2012. В проекте есть тестовая форма, которая демонстрирует использование многопоточного вызова дисплейных методов. Данные перерисовываются не сразу, а постепенно, как будто вы находитесь на веб-странице. На тестовой форме представлен пример вызова дисплейного метода, возвращающего вещественное число, и дисплейного метода, возвращающего строку. Чтобы применить пример к любой другой форме, надо 1) Добавить на вашу таблицу все кешируемые дисплейные методы, которые есть на вашей форме, но нет в вашей таблице 2) Вызвать эти дисплейные методы из дисплейных методов на вашей форме, используя предлагаемый пример. В тесте вызываются дисплейные методы "grossWeight" и "itemName" из таблицы InventTable 3) с тестовой формы взять те участки кода, которые обрамлены комментариями X++: //Дисплейные методы --> ........ //Дисплейные методы <-- На дисплейные методы формы точки останова ставить можно, т.к. они выполняются в главном потоке. Последний раз редактировалось Ace of Database; 19.12.2016 в 17:37. |
|
|
За это сообщение автора поблагодарили: mazzy (2), AlGol (3), sukhanchik (4), Logger (3), gl00mie (5), Dreadlock (5), dech (3), nYury (1). |
Теги |
thread, проекты |
|
|