и снова здравствуйте. Создал новую тему вместо продолжения старой чтобы потом елси что люди с аналогичными вопросами могли найти ее.
итак имеется модель, для которой я сделал экспортер в свой собственный формат.
во время обхода модели вывожу процесс в прогресс бар и вижу как после некоторого времени прогресс бар перестает обновляться и в заголовке написано что 3д макс не отвечает. При этом рассчет продолжается и по завершению все отвисает обратно и работает в порядке.
Если ли какие нибудь методы профилактики этих подвисаний?
ну это дефолтная штука в принципе во всех виндовых программах
иногда в таких случаях можно ставить в цикл кхм.. ну в вб это был doevents который как-бы прерывал для вывода, в делфи какой то контрол специальный был для этого типа факела что-ли
в си тоже что-то должно быть, и современных версиях для .нет тоже есть такое
Но при этом прерывание для обновления прогресс бара приведет к тому что скорость вычислений снизится, ну собственно засчет прерывания на обновление прогресс бара.
Думаю это будет особенно заметно в случае если вычисляется огромный массив какой-нибудь фигни и при этом на вычисления 1 элемента затрачивается очень мало времени.
Вообщем перебор какой-нибудь фигни, тогда обновление может немного затянуть процесс. А вот если там по секунд 30 или несколько минут вычисление идет то наверное заметной разницы не будет.
вообще что-бы сама прога не славливала "не отвечает", нужно процесс вычисления запихивать в отдельный поток. А вот как с прогресс баром быть, но возможно если прогресс бар будет как-бы тоже в потоке и из него выводится на экран то может такой фигни не будет. (Это когда объявляется в потоке вроде форма выводится на экран и там прогресс бар временный, правда я не уверен возможно точно так-же к концу цикла перестанет отвечать)
А может все это и не применимо для макс скриптов)
если про макс скрипт то
progressStart
progressUpdate
progressEnd
Скорость вычисления снижается ~30%
app=dotNetclass "System.Windows.Forms.Application"
app.doEvents()
помогло.. только его надо не с каждой итерацией цикла вызывать а сильно реже, тогда замедления просчета нет.
Всем спасибо
http://lonerobot.net/?p=50
ухты как интересно
Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)