Запуск транзакции из внешнего приложения, работающего вне контекста API, не допускается.

Запуск транзакции из внешнего приложения, работающего вне контекста API, не допускается. не может начать транзакцию.


person Dhiraj Lotake    schedule 18.07.2015    source источник
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
comment
›Этот контекст API находится в особом потоке: это поток пользовательского интерфейса, здесь ничего особенного. ›Это часто случается, когда вы создаете форму: немодальная форма, потому что модальная форма не может выйти из контекста API. - person Maxence; 13.08.2015
comment
Кроме того, для получения дополнительных сведений, The Building Coder предоставляет целую группу тем по этой теме: thebuildingcoder.typepad.com/blog/about-the-author.html#5.28 - person Jeremy Tammik; 21.12.2015