01.12.2004, 19:02 | #21 |
Участник
|
тогда - не знаю.
раньше ошибки возникали в связи с сообщениями пользователю. сейчас - не знаю. |
|
02.12.2004, 09:38 | #22 |
Участник
|
Всем доброе утро!
Начну сначала. Нужно чтобы при работе клиента с определенной переодичностью выполнялось создание закупки, строк закупки, обработка закупки. Для этого создан ряд классов, которые создают закупки, строки закупки, и обработывают их до накладной ( всего их 5 ). Все они наследники RunBaseBatch для возможного запуска этой функциональности в пакетном режиме. Но хочется сделать автоматическую обработку. Для этого в классе Application в ClassDeclaration завожу переменные класса [COLOR=red] Thread[/COLOR=red], в [COLOR=blue]startupPost[/COLOR=blue] запускаю таймеры PHP код:
В обработчике: PHP код:
Can't create tooltip ( type 2 ), а еще через некоторое время падает сама Axapta. Что я сделал не правильно? |
|
02.12.2004, 09:48 | #23 |
Участник
|
Вы неправильно к существу вопроса подошли.
Автоматический запуск в теневом потоке каких то процедур - это конечно же круто, но то что вы описали решается стандартным функционалом - сервером пакетной обработки. Тем более что у вас эти обработки уже заготовлены как наследники от RunBaseBatch. |
|
02.12.2004, 09:52 | #24 |
Участник
|
Эта функциональность должна выполнятся с периодичностью 30 мин и хотелось бы вообще забыть о ней. Пакет это хорошо, но его могут забыть запустить или пойдет что - то не так...
|
|
02.12.2004, 09:58 | #25 |
Гость
|
А, что в это время происходит с оперативной памятью, она "не съедается"?
|
|
02.12.2004, 10:00 | #26 |
Участник
|
Если вы подскажете как ее посмотреть, то посмотрю, а так в диспетчере задач вроде все нормально. Кстати, Axapta падает потом именно по ошибке памяти.
|
|
02.12.2004, 10:02 | #27 |
Участник
|
Цитата:
Изначально опубликовано sergy
Эта функциональность должна выполнятся с периодичностью 30 мин и хотелось бы вообще забыть о ней. Пакет это хорошо, но его могут забыть запустить или пойдет что - то не так... Что касается забывчивости - то это уже организационный вопрос. Как вариант - ключевому пользователю встроить небольшую проверку в какую нибудь из часто им выполняемых процедур, которая начиналет "ругаться", если последний раз задание выполнялось больше получаса назад. Хотя тоже изврат |
|
02.12.2004, 10:05 | #28 |
Участник
|
Не спорю, пакет это хорошо, но это резерв, хотелось бы организовать обработку через поток
|
|
02.12.2004, 11:11 | #29 |
Участник
|
Цитата на всякий случай из SP3 Int, Fixlist Technology 1
"Threads in Axapta: recommendations. The issue raised by a customer is whether you can use worker threads or not: It is possible to use threads in Axapta, but it is NOT recommended that you do so. They are not officially supported and are thus used at your own risk. Worker threads are used for Benchmarking purposes only and are only tested on the AOS. " |
|
02.12.2004, 11:25 | #30 |
Участник
|
Спасибо StasD очено ценная информация, это в духе MBS
|
|
02.12.2004, 12:34 | #31 |
Гость
|
А может тебе не "гасить" потоки и создавать затем их заново (как я представляю, именно на этапе "гашения" происходит какой-то косяк)?
Просто "засыпать" (sleep) поток (в поточной функции) на какое-то время и дальше работать. Что-то типа: while (true) { работаю.... sleep(XXX); что-нибудь еще... } |
|
02.12.2004, 12:38 | #32 |
Участник
|
идет жуткий тормоз из-за sleep()
|
|
02.12.2004, 12:55 | #33 |
Гость
|
Попробуй сделать такой фокус
for (i = 0 ; i< delayTime; i++) { sleep(1); } В таком виде у меня вроде бы не тормозит. |
|
02.12.2004, 13:08 | #34 |
Модератор
|
Сергей!
Видно, что Вы на клиенте Если хочется попрограммировать потоки - то да, можно извращаться. Если делать, как ПРАВИЛЬНО, то тогда - пакетный сервер. Рано или поздно он все равно Вам пригодиться... Осталось только решить проблему с автозапуском / автовходом, но здесь уже описывались решения данной проблемы. Ну, и лицензию будет жрать... С Уважением, Георгий |
|
02.12.2004, 13:30 | #35 |
Участник
|
Цитата:
Изначально опубликовано sergy
Эта функциональность должна выполнятся с периодичностью 30 мин и хотелось бы вообще забыть о ней. Пакет это хорошо, но его могут забыть запустить или пойдет что - то не так... Сколько времени вы будете программировать свой функционал? Сколько вам за это заплатят? Это и есть цена "забывчивости". Согласен с предыдущими участниками - вы занимаетесь несуществующей проблемой. За решение которой будут заплачены вполне реальные деньги. По автозапуск в режиме сервера здесь http://axapta.mazzy.ru/hints/startupcmd/#Batch |
|
02.12.2004, 14:08 | #36 |
Модератор
|
Этим и хороша работа на клиенте: Проблемы - несуществующие, а деньги - реальные!
С Уважением, Георгий. |
|
02.12.2004, 15:43 | #37 |
Участник
|
Может быть Вы и правы, что проблема не существенная, но навый класс Thread появился, значит он должен работать, а он не работает нормально.
|
|
02.12.2004, 19:26 | #38 |
Участник
|
Мысль интересная
Посмотрите tutorial_timer. |
|
03.12.2004, 09:15 | #39 |
Участник
|
Всем доброе утро!
Ломаю дальше. Решил сделать запуск потока один раз по примеру класса SysEventHandler ( работает на сервере ), т.е. в основном методе потока организуется бесконечный цикл внутри которого стоит задержка PHP код:
А если организовать семафор и подождать в потоке его открытия PHP код:
Вот так работают потоки на клиенте от MBS!!! Пользуйся народ на здоровье! |
|
03.12.2004, 09:43 | #40 |
Гость
|
Попробуй вставить вместо sleep, то что я описал выше. Такое выражение (у меня во всяком случае) не тормозит в отличие от вроде бы ~ sleep(delayTime)
|
|
Теги |
axapta, thread, потоки |
|
Похожие темы | ||||
Тема | Ответов | |||
Вызов форм методa из Thread класса | 4 | |||
Вызов метода базового класса | 15 | |||
передача курсора в два класса | 3 | |||
Запустить метод класса | 2 |
|