07.10.2009, 09:01 | #1 |
Участник
|
Баг формы в АХ связанный с колесом прокрутки мышью
Kernel AX 4.0.2501.116
Обнаружил неприятный баг в АХ: На форме в методе modified поля вызывается метод таблицы с диалоговым окном Box:NoYes. Если на форме изменить значение этого поля и сразу прокрутить колесо мыши, то АХ зависает наглухо, пожирая при этом ресурсы одного проца (ядра). С наскока решить или обойти проблему не удалось.Перенос вызова из метода формы в метод таблицы modifiedField ничего не дает. По сути АХ уходит в бесконечное активирование/деактивирование окон Info/formNotify. Для воспроизведения бага примера приложил проектик. |
|
07.10.2009, 11:38 | #2 |
Боец
|
Цитата:
Вообще говоря, не часто встречаются боксы на методах-событиях, так что сложно это отнести к багу, скорее всего это bad practice. Попробуйте повернуть реализацию задачи в сторону традиционных проверок validateField\Write. |
|
07.10.2009, 13:09 | #3 |
Участник
|
Цитата:
Сообщение от DSPIC
На самом деле, проблема в самом BOX. При таком способе вызова (из modified\validate) BOX банально не успевает отрисоваться на экране (не проверял, но может связано с его модальностью), хотя он активен и успешно опрашивает клавиатуру. Попробуйте, нажать дефолтовую клавишу бокса во время такого "повисания".
Цитата:
Цитата:
Цитата:
Отказаться от бокса увы нельзя, вопрос каким "огородом" обежать или чем заменить ? |
|
07.10.2009, 13:52 | #4 |
MCTS
|
А Вы залочьте форму на время вызова BOX.
Например так: X++: public void modified() { super(); element.lock(); Table1.box(); element.unLock(); }
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
|
За это сообщение автора поблагодарили: Alexius (1). |
07.10.2009, 14:41 | #5 |
Боец
|
|
|
07.10.2009, 15:08 | #6 |
Участник
|
|
|
07.10.2009, 15:31 | #7 |
Боец
|
|
|