Сообщество программистов Autodesk в СНГ
ADN Club => Другие продукты Autodesk => Navisworks API => Тема начата: Vladislav от 17-03-2020, 15:26:30
-
Еще такой вопрос.
Допускает ли API Navisworks (как COM, так и .Net) работу в многопоточном режиме?
То есть, к примеру, могу ли я выполнять код, получающий геометрию элементов,
одновременно в нескольких потоках?
Спасибо за информацию.
-
Интересный вопрос. Я его переадресую в ADN DevHelp. По результатам отпишусь.
-
Спасибо.
Когда я попробовал это сделать, у меня не получилось.
Но, возможно, я что-то делаю не так...
-
Когда я попробовал это сделать, у меня не получилось.
Что при этом происходило?
-
Появляется такое сообщение (см. вложение)
-
Появляется такое сообщение (см. вложение)
Ага. Ну к COM-серверу насколько я помню нельзя обращаться сразу из нескольких потоков.
-
Следовательно, и многопоточная работа с API невозможна?
-
Следовательно, и многопоточная работа с API невозможна?
Давай дождёмся официального ответа.
-
Vladislav,
Я получил ответ от ADN DevHelp, требующий твоего участия. По их утверждениям многое зависит от контекста выполнения. Так что без примера кода (причем полноценного собираемого проекта) тут никак. Если ты действительно заинтересован в решении этой проблемы, то создай пример проекта. И если ты решишься на это, но не хочешь выкладывать его на всеобщее обозрение, то можешь отправить его лично мне. Я переправлю его в ADN DevHelp для анализа возможности распараллеливания процесса.
-
Попробую подготовить отдельный.
Только займет некоторое время.
А я должен сам делать в нем распараллеливание или просто указать код, который должен
разбиваться на потоки?
-
Попробую подготовить отдельный.
Только займет некоторое время.
А я должен сам делать в нем распараллеливание или просто указать код, который должен
разбиваться на потоки?
Отлично, но всё-таки не затягивай процесс, пока мой запрос не закрыли :-) Сделай сам распараллеливание, как ты его видишь. Надеюсь в результате можно будет получить от ADN DevHelp рекомендации как это можно будет правильно сделать. Если конечно это возможно...
-
Подготовил демонстрационный проект с распараллеливанием процесса получения геометрии (находится во вложении).
Плагин собирается, запускается и далее виснет с указанной ранее ошибкой.
-
Подготовил демонстрационный проект с распараллеливанием процесса получения геометрии (находится во вложении).
Плагин собирается, запускается и далее виснет с указанной ранее ошибкой.
Еще бы к нему небольшой тестовый файл, на котором испытывать.
-
Я испытывал на примерах, идущих вместе с Нэвисом. Там несколько в папке samples.
-
Я испытывал на примерах, идущих вместе с Нэвисом. Там несколько в папке samples.
Принято. Отправил. Попросил прокомментировать код и возможность его ускорить.
-
Команда инженеров подтвердила, что использовать Navisworks API (и COM, и .NET) можно только из одного (желательно главного) потока:
The answer is "Navisworks is generally not safe for multi-threading."
They suggest to call API function on the main thread.
-
Большое спасибо за разъяснение!