Показать сообщение отдельно
Старый 13.11.2015, 00:46   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
это известная проблема X++, когда выполнение кода просто прерывается без возможности отлова исключений. Чаще всего происходит при вызовах внешнего кода.
Знаю два варианта решения:
#1: На C# пишем простую функцию, которая вызывает внешний сервис (или, в общем случае, любой, потенциально нестабильный внешний код). Функция будет вызывать внешнюю 1:1 как бы вы это делали из X++. Но на C# вы делаете полноценный try/catch, который гарантированно вернет управление обратно в АХ. Функцию подключаем как .net reference в АОТ и юзаем. Это решение простое и надежное, правильное. Но получаем все нюансы использования .net references, что требует бережного обращения, в зависимости от версии АХ
#2 реализовать класс MultithreadHandler, который: 1) запустит необходимое кол-во потоков в асинхронном режиме 2) периодически, опрашивая их статус, дождется их окончания 3) в зависимости от того, вернул поток результат, либо скоропостижно скончался (это можно отследить в классе Thread), залогирует соотвествующий результат. Тут правда, в отличие от первого способа, вы никогда не узнаете, от чего поток умер (или какое исключение вернул внеший вызов)
#3 Гм, или я не понял задачу ,

Последний раз редактировалось DSPIC; 13.11.2015 в 00:49.