AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.12.2004, 09:38   #1  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Всем доброе утро!
Начну сначала. Нужно чтобы при работе клиента с определенной переодичностью выполнялось создание закупки, строк закупки, обработка закупки. Для этого создан ряд классов, которые создают закупки, строки закупки, и обработывают их до накладной ( всего их 5 ). Все они наследники RunBaseBatch для возможного запуска этой функциональности в пакетном режиме.
Но хочется сделать автоматическую обработку. Для этого в классе Application в ClassDeclaration завожу переменные класса [COLOR=red] Thread[/COLOR=red], в [COLOR=blue]startupPost[/COLOR=blue] запускаю таймеры
PHP код:
this.setTimeOutIdentifierStrимя_обработчика ), 3000 ); 
.
В обработчике:

PHP код:
protected void имя_обработчика() {
    
// если поток еще не создан или уже закончил работу, то создать новый поток
    
if ( !handlingMovement_Header || handlingMovement_Header.status() == ) {
        
// запуск потока
        
handlingMovement_Header null;
        
handlingMovement_Header HandlingMovement_Header::runThread();
    }
    
// запуск метода снова
    
this.setTimeOutIdentifierStrимя_обработчика ), 10000 );
}

// запуск потока
client static Thread runThread() {
Thread   thread;             // объект класса Thread
;
    
// создание объекта класса Thread
    
thread = new Thread();
    
// запуск потока
    
thread.runClassNumHandlingMovement_Header ), StaticMethodStrHandlingMovement_HeaderentryPointThread ) );
return 
thread;
}

// точка входа
private client static void entryPointThreadThread pThread ) {
HandlingMovement_Header   handlingMovement_Header;                // объект класса HandlingMovement_Header
;
    
// создание объекта класса HandlingMovement_Header
    
handlingMovement_Header = new HandlingMovement_Header();
    
// обработка
    
if ( handlingMovement_Header handlingMovement_Header.run();
}

// обработка
void run() {
;
    
// цикл по одобренным строкам
    
while select movement_Header_Select
                 where movement_Header_Select
.Approve == true {
        
// перейти в компанию
        
changeCompanymovement_Header_Select.CompanyTo ) {
            try {
                
// обработка
                
this.handling();
            }
            catch ( 
Exception::Deadlock ) {
            }
            catch ( 
Exception::Error ) {
            }
        }
    }

Некоторое время все работает нормально 10 - 15 мин, а потом появляется сообщение
Can't create tooltip ( type 2 ), а еще через некоторое время падает сама Axapta. Что я сделал не правильно?
Теги
axapta, thread, потоки

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вызов форм методa из Thread класса vitaly85 DAX: Программирование 4 24.01.2009 03:48
Вызов метода базового класса Eldar9x DAX: Программирование 15 22.03.2008 19:10
передача курсора в два класса kitty DAX: Программирование 3 09.08.2006 13:21
Запустить метод класса loka DAX: Программирование 2 13.03.2006 15:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.