02.03.2011, 12:58 | #10 |
Участник
|
Цитата:
Вот код макроса EndSafeCall_RU : X++: // %1 retry count by default 4 // %2 time out by default 250 // %3 exception type by default Exception::Error #ifnot.empty(%1) #define.safeCallRetryCount(%1) #endif #if.empty(%1) #define.safeCallRetryCount(4) #endif #ifnot.empty(%2) #define.safeCallTimeOut(%2) #endif #if.empty(%2) #define.safeCallTimeOut(250) #endif #ifnot.empty(%3) #define.safeCallExceptionType(%3) #endif #if.empty(%3) #define.safeCallExceptionType(Exception::Error) #endif catch (#safeCallExceptionType) { if (xSession::currentRetryCount() >= #safeCallRetryCount) { throw #safeCallExceptionType; } else { #define.safeCallNotifyMethod('notify') infolog.clear(0); infolog.addTimeOut(infolog, #safeCallNotifyMethod, #safeCallTimeOut); infolog.wait(); retry; } } X++: try Может лучше копать в сторону "однопоточного" запуска, предложенного AndreyStar ? Кто знает как это делать ? Через thread ? Но это ведь тоже определенное извращение... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
Теги |
com-объект, excel, thread, асинхронный com, ошибка |
|
|