Запуск транзакции из внешнего приложения, работающего вне контекста API, не допускается. не может начать транзакцию.
Запуск транзакции из внешнего приложения, работающего вне контекста API, не допускается.
comment
Не уверен, о чем вы спрашиваете ... пожалуйста, уточните.
- person Augusto Goncalves   schedule 18.07.2015
Ответы (1)
Используя свой волшебный хрустальный шар ясновидения, чтобы догадаться, что вы спрашиваете, как избежать появления этого сообщения об ошибке в ваших плагинах Revit / RPS, вот небольшая дополнительная информация:
- все вызовы Revit API должны происходить внутри «контекста API»
- этот "контекст API" живет в специальном потоке
- вы, вероятно, обращаетесь к API из другого потока
- это часто случается, когда вы делаете
Form
и вызов API из одного из событий (Button.OnClick
)
Что вы хотите сделать, так это выяснить, как вернуться в контекст API, чтобы выполнить свой код. Для этого есть два основных метода (при условии, что вы уже вышли из IExternalCommand.Execute
контекста):
- опрос вакансий внутри события
Idling
- используя
ExternalEvent
Поскольку вы упомянули RevitPythonShell в тегах, почему бы вам не проверить, как я использовал внешние события в моем примере веб-сервера.
- создать
IExternalEventHandler
- реализовать свой
Execute
метод - (метод
Execute
работает в контексте Revit API) - создать
ExternalEvent
(используя только что созданный обработчик событий) - когда вам нужно что-то сделать в контексте Revit API, уведомить внешнее событие (
my_external_event.Raise()
)
person
Daren Thomas
schedule
20.07.2015
›Этот контекст API находится в особом потоке: это поток пользовательского интерфейса, здесь ничего особенного. ›Это часто случается, когда вы создаете форму: немодальная форма, потому что модальная форма не может выйти из контекста API.
- person Maxence; 13.08.2015
Кроме того, для получения дополнительных сведений, The Building Coder предоставляет целую группу тем по этой теме: thebuildingcoder.typepad.com/blog/about-the-author.html#5.28
- person Jeremy Tammik; 21.12.2015