Revit报错:Attempting to create an ExternalEvent outside of a standard API execution

Revit 2016开始禁止在非主线程中注册或注销API事件,导致在子窗体创建外部事件出错。推荐使用模态对话框或在ExternalCommand的Execute函数中处理事件。若需使用非模态对话框,可借助ExternalEvent的Raise方法确保在主线程执行。
摘要由CSDN通过智能技术生成

Attempting to create an ExternalEvent outside of a standard API execution

问题处理

在这里插入图片描述

在子窗体创建外部事件会报错,只能在父窗体创建然后传入子窗体。

使用外部事件和外部命令的时候需要revitAPI提供的外部环境,在调用子界面的时候继承IExternalCommand的类可能结束了。

解释

API events - behavioral change
Although the Revit API has never officially supported such a work-flow it is now enforced that registering to and unregistering from events must happen while executing on the main thread. An exception will be thrown if an external application attempts to register to (or unregister from) events from outside of valid API context.

在以前的Revit版本中, 我们可以在一个非模态对话框中注册或者注销一个事件,但是Revit 2016做了一些改变,不再允许这样做,凡是在非Revit主线程里面的注册或者注销事件,系统会抛出异常,如果您没有捕获这个异常,将会导致系统崩溃。

使用模态对话框,或者尽量保证事件在ExternalCommand的Execute函数或者ExternalApplication的OnStartup函数里面注册。
如果一定要使用非模态对话框,那么请使用ExternalEvent事件的Raise函数,强迫程序进入Revit主线程,然后在里面进行注册事件。

下面是一些废话,因为csdn需要至少10行10个字
下面是一些废话,因为csdn需要至少10行10个字
下面是一些废话,因为csdn需要至少10行10个字
下面是一些废话,因为csdn需要至少10行10个字
下面是一些废话,因为csdn需要至少10行10个字

7925bac8-0597-4fbf-8d23-8b2762e91338

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤影墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值