Показать сообщение отдельно
Старый 02.03.2011, 12:58   #18  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
gl00mie, а не могли бы вы разместить в этой теме коды этих макросов и переписанных методов ComExcelDocument_RU. Для тех у кого ещё нет спасительного rollup
Пробовал "играть" с макросами. Они помогают не всегда либо не помогают вообще!!!

Вот код макроса 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;
    }
}
И StartSafeCall_RU:
X++:
try
Только это как "мертвому припарки"

Может лучше копать в сторону "однопоточного" запуска, предложенного AndreyStar ?
Кто знает как это делать ?
Через thread ? Но это ведь тоже определенное извращение...
За это сообщение автора поблагодарили: S.Kuskov (1).