|
![]() |
#1 |
Участник
|
В методе который выполняется AIF запускайте thread.
|
|
![]() |
#2 |
Участник
|
Если кому интересно, нашел решение проблемы (спасибо подсказке Alex_KD).
При вызове сервиса AIF создает "глобальную" транзакцию, соттветственно если что-то случается в самом сервисе, все try-catch блоки самого сервиса просто игнорируются и идут выше в обработчики AIF, где собственно было начало транзакции. Все попытки использовать catch Error, ClrError, Internal и просто catch не увенчались успехом. Что сделано: в точке входа сервиса сделал проверку на уровень tts и сразу сделал ttscommit. X++: ttsInitialLevel = appl.ttsLevel(); if(ttsInitialLevel > 0) { ttscommit; ttsbegin; } ... После отработки метода делаю ttscommit своей транзакции, и перед возвратом создаю новую. X++: if(ttsInitialLevel >0 && appl.ttsLevel() == 0) ttsbegin; return something Последний раз редактировалось sgt.Pepper; 26.04.2016 в 20:43. |
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
![]() |
#3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
![]() |
#4 |
Участник
|
Ну я собственно с единицей нигде не сравниваю, проверяю только, что транзакция открыта (ttsInitialLevel > 0)
А в чем вы видите ошибку? |
|
![]() |
#5 |
Участник
|
ttsBegin у вас один, когда все транзакции возвращаетесь
|
|
![]() |
#6 |
Участник
|
Вы правы, надо будет что-то вроде такого написать
X++: for (i==1; I<= ttsInitialLevel;i++) ttsbegin; |
|
![]() |
#7 |
Участник
|
Цитата:
![]() Сегодня Вы не видите несколько транзакций, сделаете как вам видится, уволитесь, пройдет 5ть лет и кто-нибудь влезет в этот механизм, потом пол компании будет затылок чесать: "а что же произошло"? P.S. Может вместо ttsAbort написать ttsCommit? ![]() |
|
Теги |
aif, ax2012, user connection |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|