Ничто не мешает поместить код в SubVI и разместить её на БД основной программы, организовав обмен через очереди и нотифайеры.AlexanderKonoval писал(а):И сам код SubVI довольно большой, его вставить в другую весьма проблематично.
Возможно, что и сработает, если уберёте метод Abort VI. Но ситуация с наложением потоков останется, в результате может появиться коллизия, когда один SubVI запущен и в этот момент запускается ещё один. Если DLL не потокобезопасна, то вероятен крах программы или разного рода эксцессы.AlexanderKonoval писал(а):сработает ли, если на выходе из цикла верхнего уровня использую Invoke Node - Control Value - Set, и задам значение кнопки Stop = True для SubVI? Это не одно и то же, что Abort VI?
Я предлагаю изменить архитектуру программы и сделать несколько параллельных циклов, часть из которых можно поместить в подприборы. Обмен данными между ними будет через очереди. Остановка циклов производится через Notifier = True. Коллизий не возникнет, т.к. каждый цикл - один поток, а вызовы из библиотеки корректно отработают, т.к. будет ждать завершения выполнения всех . Вот примерчик, можете его менять, как угодно.