Показать сообщение отдельно
Старый 02.12.2004, 09:38   #22  
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. Что я сделал не правильно?