![]() |
#16 |
Участник
|
Цитата:
(и вообще считаю, что префиксы-суффиксы - зло. раз, два) код метода SysOperationProgressServer.getCount X++: public int64 getCount(int _idx = 1) { if ( Bypass ) return 0; select ProgressTotal from progress where progress.RecId == progressRecIds[_idx]; return progress.ProgressCount; } в серверном прогресс-баре счетчик записывается в таблицу, которая является общей для всех процессов. и обновление SysProgress параллельными процессами в легкую может стать бутылочным горлышком на сервере. выше я говорил, что некоторые на проектах запрещают использовать ProgressBar вообще. конечно же не для того, чтобы усложить жизнь пользователей ![]() а именно из-за того, что натыкаются на это бутылочное горлышко. в основном проблема возникает, когда программист отлаживает RunBaseBatch на клиенте с прогрессбаром, а потом этот же класс безо всяких модификаций начинает выполняться в пакетнике. есть разные подходы для решения проблемы с прогресс-баром на сервере. что-то сделано и в Аксапте - обратите внимание, как забавно работает процент выполненных работ в пакетных заданиях Цитата:
просто окно прогресса закрывается раньше, чем пользователь успевает заметить. Хинт в том, что винда тоже отрисовывает окошки не сразу. Там тоже свой delay есть. Цитата:
Цитата:
Сообщение от Perc
![]() Я, в случае если хочу в прогрессе уведомить о начале этапа многоэтапной обработки(ну предположим обработка по месяцам) - не стесняюсь, пишу update(true). Если у вас такой же случай, то тоже пишите. А если итераций сотни+, то никто не заметить в движке возможную мелкую несогласованность)
см. форму Tutorial_Progress Цитата:
чтобы сделать его самостоятельно, посмотрите на серверный setCount ![]() |
|